Распарсивание ссылки

Статус
В этой теме нельзя размещать новые ответы.

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Подскажите пожалуйста, имеем ссылку вида
< a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>.
Необходимо вывести все название с их ID'шками.
Notebook Acer - 363809
Текст находится в переменной $html
Буду безмерно благодарен за РНРшный скрипт.
 
PHP:
<?php

// ...
preg_match('%<a href="/products\.php\?product_id=(\d+)#.+?" title="(.+?)".+?</a>%', $html, $tmp);
$id=$tmp[1];
$title=$tmp[2];
echo $title.' '.$id;
?>
 
Писал с помощью preg_match_all
Ничего не нашёл.
 
Писал с помощью preg_match_all
Ничего не нашёл.
preg_match_all по другому возвращает массив с результатом. Достаточно сделать print_r чтобы понять что к чему
PHP:
Array
(
    [0] => Array
        (
            [0] => <a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>
            [1] => <a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>
        )
    [1] => Array
        (
            [0] => 363809
            [1] => 363809
        )
    [2] => Array
        (
            [0] => Notebook Acer
            [1] => Notebook Acer
        )
)

Хотя для all удобнее применять PREG_SET_ORDER -
PHP:
preg_match_all('%<a href="/products\.php\?product_id=(\d+)#.+?" title="(.+?)".+?</a>%', $html, $tmp, PREG_SET_ORDER); 
Array
(
    [0] => Array
        (
            [0] => <a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>
            [1] => 363809
            [2] => Notebook Acer
        )
    [1] => Array
        (
            [0] => <a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>
            [1] => 363809
            [2] => Notebook Acer
        )
)
 
возможно надо попробовать добавить модификатор "m" в паттерн
меня несколько раз спасало:
PHP:
$html = <<<EOF
<a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>
<a href="/products.php?product_id=363810#product_363810" title="Notebook Bd" и тут ещё куча всего> Notebook Bd</a>
EOF;

preg_match_all( '!product_id=(\d+).+title="(.+)"!m', $html, $match );
print_r( $match );
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху