Для извлечения URL (не идеальное решение, но я почти доволен, как подсчетов производительности) Я используюИзвлечь URL из строки с использованием PHP, если какой-либо из двух специальных символов в URL-адресе следует рассматривать как разделители (первые символы, за которыми следует URL-адрес)?
preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $string, $match);
код для извлечения URL. Однако это не идеальное решение для меня, поскольку URL-адреса должны быть вынуждены разрезать до ]
или "|"
, если любой из этих двух символов встретил в извлеченном URL-адресе.
Я знаю, что эти символы являются действительными символами в URL-адресах, однако для моего случая они должны быть недействительными. Как должно быть слегка изменено preg_match_all
, чтобы знать об этих двух разделителях? Спасибо.
Acccording в RFC (http://www.faqs.org/rfcs/rfc1738.html), этих двух символа объявляются как «небезопасные» и должны быть закодированы. Вы действительно имеете их в некоторых URL-адресах ?. Если вы хотите их сопоставить, замените '[: punct:]' на список «punct» символов минус эти два символа. – Toto
Спасибо. Но попытался заменить [^, [: punct:] \ s] на [^, \ | \ s] (даже для одного «|») без везения. – Haradzieniec