Forum Webscript.Ru

Программирование => PHP => Тема начата: Unregistered от 24 Августа 2002, 18:53:56

Название: поиск ссылок в массиве на пхп
Отправлено: 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
Название: поиск ссылок в массиве на пхп
Отправлено: Дмитрий Попов от 24 Августа 2002, 19:39:10
$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, достаточно будет вывести этот массив..