Forum Webscript.Ru
Программирование => PHP => Тема начата: Unregistered от 24 Августа 2002, 18:53:56
-
Привет Алл!..
Есть задача...
1. качается некий текст
2.в нем надо найти ссылки например типа http://www.ru
причем если у ссылки есть какие-либо параметры, т.е. http://www.ru/index.php?id=222&user=qwerty
то надо брать ссылку целиком.
3. Вывести все ссылки по порядку...
например:
ссылка1:http://www.ru/index.php?id=222&user=qwerty
ссылка2:http://www.ru/index.php?id=222&user=1234234
ссылка3:http://www.ru/index.php?id=222&user=123
-
$text= eregi_replace("((ht|f)tp://)((([a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,3}))|(([0-9]{1,3}\\.){3}([0-9]{1,3})))((/|\\?)[a-z0-9~#%&\'_\\+=:\\?\\.-]*)*)", "\\\\0", $text);
Это заменяет URL\'s на ссылки...
Можно через eregi искать совпадения...
В общем, формула (RegEX) что бы найти:
((ht|f)tp://)((([a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,3}))|(([0-9]{1,3}\\.){3}([0-9]{1,3})))((/|\\?)[a-z0-9~#%&\'_\\+=:\\?\\.-]*)*)
Не знаю, как качается текст, но, теоретически, можно читать его построчно, и сделать что-то вроде:
$mass[]= eregi_replace("((ht|f)tp://)((([a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,3}))|(([0-9]{1,3}\\.){3}([0-9]{1,3})))((/|\\?)[a-z0-9~#%&\'_\\+=:\\?\\.-]*)*)", "\\\\0", $text);
Тогда массив $mass - и будут все URL, достаточно будет вывести этот массив..