preg_match_all вылавливает лишнее

rdva

Новичок
preg_match_all вылавливает лишнее

нужно отловить все ссылки в тексте, где есть строка "batareja", неважно, в URL или в анкоре(тексте)ссылки.
PHP:
 preg_match_all('/<a\shref=.*?batareja.*?<\/a>/i', $page, $matches);
вылавливает в том числе ссылки, где нет слова "batareja". Почему?

я рассуждаю так:
"<a" ПРОБЕЛ "href=" 0_ИЛИ_БОЛЕЕ_ЛЮБЫХ_СИМВОЛОВ "batareja" 0_ИЛИ_БОЛЕЕ_ЛЮБЫХ_СИМВОЛОВ "</a>"
 

rdva

Новичок
подопытный кролик: mobilebattery.ru (это мой сайт)
результат (print_r($matches)):
PHP:
[0] => Array
        (
            [0] => <a href="http://www.mobilebattery.ru/Universalnaja-batareja-noutbuka-unb01-p-244.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24"><img src="product_thumb.php?img=images/pitatel_img/unb-01.jpg&w=100&h=74" width="100" height="74" border="0" alt="Универсальная батарея для ноутбука UNB-01" title="Универсальная батарея для ноутбука UNB-01"></a>
            [1] => <a href="http://www.mobilebattery.ru/Universalnaja-batareja-noutbuka-unb01-p-244.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Универсальная батарея для ноутбука UNB-01</a>
            [2] => <a href="http://www.mobilebattery.ru/Universalnyj-blok-pitanija-noutbuka-snad90w-p-396.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Универсальный блок питания для ноутбука SN-AD-90W</a></td></tr><tr><td class="infoBoxContents" valign="top">02.</td><td class="infoBoxContents"><a href="http://www.mobilebattery.ru/Batareja-noutbuka-nb802d-a31s5-a32s5-s5nbtb1a-p-239.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Батарея для ноутбука NB-802D; A31-S5; A32-S5; S5NBTB1A</a>

            [3] => <a href="http://www.mobilebattery.ru/Batareja-noutbuka-nb807-a42a3-p-198.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Батарея для ноутбука NB-807; A42-A3</a>
            [4] => <a href="http://www.mobilebattery.ru/Universalnyj-blok-pitanija-noutbuka-uac90-acc10-p-248.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Универсальный блок питания для ноутбука UAC-90; AC-C10</a></td></tr><tr><td class="infoBoxContents" valign="top">05.</td><td class="infoBoxContents"><a href="http://www.mobilebattery.ru/Batareja-noutbuka-nb803-a42a2-p-194.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Батарея для ноутбука NB-803; A42-A2</a>
            [5] => <a href="http://www.mobilebattery.ru/Universalnyj-avtoadapter-noutbuka-snudc90-p-397.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Универсальный автоадаптер для ноутбука SN-UDC-90</a></td></tr><tr><td class="infoBoxContents" valign="top">07.</td><td class="infoBoxContents"><a href="http://www.mobilebattery.ru/Batareja-kb136-sbp03-p-775.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Батарея для КПК (PDA) KB-136; SBP-03</a>
            [6] => <a href="http://www.mobilebattery.ru/Batareja-noutbuka-nb816-dr35-dr35s-b5942-p-207.html?osCsid=9d1aee2ca926d76a9aa4b9a662f7ee24">Батарея для ноутбука NB-816; DR35; DR35S; B-5942</a>

        )

)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Dl
surg30n
В данном форуме вопросы парсинга контента не обсуждаются по морально-етическим соображениям
 

rdva

Новичок
Вот так вылавливает нужное слово в URL ссылки

PHP:
$search_this ='word';
preg_match_all('/<a href="([^>]*?'.$search_this.'[^>]*?)">(.*?)<\/a>/i', $page, $cats);
 
Сверху