IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Требуется совет по парсингу на PHP (https://www.imho.ws/showthread.php?t=104824)

MeatEater 14.06.2006 02:53

Требуется совет по парсингу на PHP
 
Уважаемые, есть проблема.
Нужно проверить, есть ли на чужой странице моя полноценная рабочая ссылка, т. е. не просто есть ли http://mydomain.com, а чтобы он был в тегах A HREF.
При этом может быть или не быть приписано www, как http://www.mydomain.com, еще это может быть записано большими / маленькими буквами, еще люди по-разному используют кавычки и апострофы или их не используют в этом теге. Плюс могут быть лишние пробелы.
Страницу получаю с помощью CURL, а парсить уже убился.
В общем, помогите кто может выпарсить рабочий линк.
Спасибо.

is_absent 14.06.2006 14:54

попробуй: http://ru.php.net/preg_match_all

Псих 14.06.2006 15:36

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

is_absent, просто человек просит наглядных примеров. А я в регулярных не силен.

is_absent 14.06.2006 15:43

preg_match_all('/<a.*href=[\'"]?(.*)\b/', $subject, $result);
по идее должно помочь

MeatEater 14.06.2006 15:59

Цитата:

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

Цитата:

is_absent:
preg_match_all('/<a.*href=[\'"]?(.*)\b/', $subject, $result);
Будь добр, что с этим дальше делать? Вроде как
foreach ($result as $val)
но я что-то туплю...

is_absent 14.06.2006 16:15

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

PHP код:

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

    
preg_match_all($regexp$subject$result);

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

        
/* ... */
    



MeatEater 14.06.2006 16:24

Цитата:

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, то никак.

is_absent 14.06.2006 16:30

так. давно не писал :)
нужно или
preg_match_all($regexp, $subject, $result, PREG_SET_ORDER);
или
foreach ($result[1] as $url)

MeatEater 14.06.2006 16:40

Ура, заработало (с) Денвер.
Цитата:

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


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

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