imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 14.06.2006, 02:53     # 1
MeatEater
Member
 
Регистрация: 25.08.2002
Сообщения: 207

MeatEater Путь к славе только начался
Question Требуется совет по парсингу на PHP

Уважаемые, есть проблема.
Нужно проверить, есть ли на чужой странице моя полноценная рабочая ссылка, т. е. не просто есть ли http://mydomain.com, а чтобы он был в тегах A HREF.
При этом может быть или не быть приписано www, как http://www.mydomain.com, еще это может быть записано большими / маленькими буквами, еще люди по-разному используют кавычки и апострофы или их не используют в этом теге. Плюс могут быть лишние пробелы.
Страницу получаю с помощью CURL, а парсить уже убился.
В общем, помогите кто может выпарсить рабочий линк.
Спасибо.
MeatEater вне форума  
Старый 14.06.2006, 14:54     # 2
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
попробуй: http://ru.php.net/preg_match_all
__________________
Nunc est bibendum
is_absent вне форума  
Старый 14.06.2006, 15:36     # 3
Псих
::VIP::
Guinness Liker
Понаехало тут
 
Аватар для Псих
 
Регистрация: 26.01.2003
Адрес: В нейроне
Пол: Male
Сообщения: 2 848

Псих СуперБогПсих СуперБог
Псих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБог
да я думаю стоит глянуть в сторону регулярынх выражений.

is_absent, просто человек просит наглядных примеров. А я в регулярных не силен.
__________________
меня не вылечат
Псих вне форума  
Старый 14.06.2006, 15:43     # 4
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
preg_match_all('/<a.*href=[\'"]?(.*)\b/', $subject, $result);
по идее должно помочь
__________________
Nunc est bibendum
is_absent вне форума  
Старый 14.06.2006, 15:59     # 5
MeatEater
Member
 
Регистрация: 25.08.2002
Сообщения: 207

MeatEater Путь к славе только начался
Цитата:
Псих:
да я думаю стоит глянуть в сторону регулярынх выражений.
Я тоже так думаю...

Цитата:
is_absent:
preg_match_all('/<a.*href=[\'"]?(.*)\b/', $subject, $result);
Будь добр, что с этим дальше делать? Вроде как
foreach ($result as $val)
но я что-то туплю...
MeatEater вне форума  
Старый 14.06.2006, 16:15     # 6
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
прошу прощения.. немножко неверное регулярное выражение..
так должно быть лучше:

PHP код:
    $regexp '/<a[^h]*href\=[\'"]?([-A-Z0-9+&@#\/%=~_|!:,.;]*)/i';

    
preg_match_all($regexp$subject$result);

    foreach (
$result as $match) {
        
$url $match[1];

        
/* ... */
    

__________________
Nunc est bibendum
is_absent вне форума  
Старый 14.06.2006, 16:24     # 7
MeatEater
Member
 
Регистрация: 25.08.2002
Сообщения: 207

MeatEater Путь к славе только начался
Цитата:
is_absent:
$url = $match[1];
В этой строке дает Notice: Undefined offset: 1
$subject делаю так:
$subject='text1: <a href="www.abc.com">abc.com</a> text2';
Финиш вроде близко...
Спасибо

P.S. C $url = $match[0]; вроде бы дает в $url линк.

Чтоли все работает?

P.P.S. Нет, не все Если ссылок больше 1, то никак.

Последний раз редактировалось MeatEater; 14.06.2006 в 16:28.
MeatEater вне форума  
Старый 14.06.2006, 16:30     # 8
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
так. давно не писал
нужно или
preg_match_all($regexp, $subject, $result, PREG_SET_ORDER);
или
foreach ($result[1] as $url)
__________________
Nunc est bibendum
is_absent вне форума  
Старый 14.06.2006, 16:40     # 9
MeatEater
Member
 
Регистрация: 25.08.2002
Сообщения: 207

MeatEater Путь к славе только начался
Ура, заработало (с) Денвер.
Цитата:
is_absent:
foreach ($result[1] as $url)
Вот с этим все ОК - ищет все линки. Счастье наступило. Спасибо.

Последний раз редактировалось MeatEater; 14.06.2006 в 16:41. Причина: попадание пальцем не по тем кнопкам
MeatEater вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:47.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.