Вот мой способ извлечения всех URL-адресов из $ text:
preg_match_all('#(https?://[a-z0-9\.\-_\#%&=/?;,!:~@\$\+]+)#iu', $text, $m);
Предполагается, что URL-адрес начинается с https: // или http: //, а затем может иметь последовательность, ограниченнуюспециальный набор символов.
Тогда я могу использовать http://www.php.net/manual/en/function.parse-url.php на $m
, чтобы получить все детали URL
Редактировать: Кроме того, если вы анализируете текст, вы можетехотите проверить периоды (.
) и другие знаки пунктуации в конце URL.Я заметил, что люди могут поставить .
в конце URL, если URL находится в конце предложения, например, как http://example.com.
Так что я делаю что-то вроде этого:
if (($url[$pos]==='!') || ($url[$pos]==='.')) { // probably do not want these chars at the end of a url!
$url = substr($url, 0, $pos);
}