
28.04.2009, 20:30
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
Думаю универсальной на все случаи жизни в данном случае не придумать, обязательно должно быть какое-то ограничение справа, либо расширение нужное, либо слеш, либо ">" и etc., вот вариант со слешем:
PHP код:
<?php
$text='Hello http://allow1.url/preg/match.php/ Hello allo https://allow2.url/preg/match.php/ ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*/)|(https://.*/.*/.*/)#Ui", $text, $res);
print_r($res);
?>
а вот вариант с заданным расширением (фактически просто ограничитель справа, слеш есть или нет в конце ссылки - значение не имеет особого, думаю объяснять не надо, http://sait/admin и http://sait/admin/) в итоге дадут одинаковый результат):
PHP код:
<?php
$text='Hello http://allow1.url/preg/match.php Hello allo https://allow2.url/preg/match.php ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*php)|(https://.*/.*/.*php)#Ui", $text, $res);
print_r($res[0]);
?>
либо парсить ссылки включая "<a href='kfkfkfkfkf'>название_ссылки</a>", что вообще-то более правильно и действительно универсальнее
Т.е. принцип составления ЛЮБОГО регулярного выражения простой - должно быть НАЧАЛО и должен быть КОНЕЦ, как это не странно. Если спошлняковый текст (не имена файлов и т.д., если проводить аналогию с поиском, там ОГРАНИЧЕННЫЙ текст. А тут - сплошняк сплошной.
ЗЫЖ: Вроде бы  Если не прав - думаю поправят
Последний раз редактировалось Pashkela; 28.04.2009 в 20:55..
|
|
|