HTML: <div class="b-address"> <a href="//maps.yandex.ru/?where&ol=biz&oid=1008561375" class="b-address__link" onmousedown="w(this,'254.212.281');" target="_blank"><i class="b-address__link-icon"></i>Москва, ул. Хуторская 2-я, 34</a> +7 (495) 646-03-78 </div><div class="b-serp-item__links"> <span class="b-serp-url b-serp-url_inline_yes"> <span class="b-serp-url__item"><a href="http://www.kond.ru/" class="b-serp-url__link" onmousedown="w(this,'80.22.327','84=139,186=80,13=85');" target="_blank">kond.ru</a></span> </span> <span class="b-serp-url b-serp-url_inline_yes"> <span class="b-serp-url__item"><a href="/yandsearch?date=&text=%D0%BA%D0%BE%D0%BD%D0%B4%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%B5%D1%80&site=&rstr=-213&lang=all&within=0&from_day=&from_month=&from_year=&to_day=&to_month=&to_year=&mime=all&numdoc=50&lr=11470&tld=ua&ncrnd=5340" class="b-serp-url__link" onmousedown="w(this,'80.22.287','84=139');">Москва</a></span> </span> <span class="b-serp-item__links-item b-serp-item__links-saved"> <a class="b-serp-item__links-link" href="http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2Fwww.kond.ru%2F&text=%D0%BA%D0%BE%D0%BD%D0%B4%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%B5%D1%80&l10n=ru&sign=35fd01a00fc41fe7dc84e66467d6d758&keyno=0" onmousedown="w(this,'80.22.337','84=139');" target="_blank" title="Сохранённая копия страницы на сервере Яндекса">копия</a> </span> <span class="b-serp-item__links-item"> <a class="b-serp-item__links-link" href="/yandsearch?text=%D0%BA%D0%BE%D0%BD%D0%B4%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%B5%D1%80&rstr=0-1&site=kond.ru&lr=11470" onmousedown="w(this,'80.22.336','84=139');" title="Поискать «кондиционер» на сайте kond.ru">ещё</a> </span> </div> Из этого куска нужно вытащить +7 (495) 646-03-78 и kond.ru помогите с регулярным. Вот как пытался: PHP: /<i class="b-address__link-icon"><\/i>(.*?)<\/a>(.*?)<\/div>(.*?)</div><div class="b-serp-item__links"><span class="b-serp-url b-serp-url_inline_yes"><span class="b-serp-url__item"><a href="(.*?)" class="b-serp-url__link"/s
Какая-то, по правде, очень извращённая попытка безумно усложнить то, что сделать просто. Что означает здесь "</div>"? Мало того, что символ косой черты не экранирован, так этого div и просто нет в описанном выше html. Дальше в регулярном выражении встречаются множество тегов, которые не отделены друг от друга ничем, в то время как в указанном html они отделены пробелами, табуляцией и переносом строки. Напишите отдельные регулярные выражения для телефона и желанного адреса. Для адреса, например, будет достаточно: /<a href="(.*?)" class="b-serp-url__link"/ Ну или добавьте в свой код между тегами \s* и уберите лишний div.
PHP: /<i class="b-address__link-icon"><\/i>(.*?)<\/a>(.*?)<\/div>(.*?)<div class="b-serp-item__links">\s+<span class="b-serp-url b-serp-url_inline_yes">\s+<span class="b-serp-url__item">\s+<a href="(.*?)" class="b-serp-url__link"/s Выдает пустой массив
Я писал \s*, а вы написали \s+, то есть обязательно потребовали наличие какого-либо пробельного символа и вставили эту конструкцию там, где надо, и там, где не надо =) Замените "+" на "*" и всё будет работать (хотя выражение по-прежнему выглядит странным, но зато работает).
Поставил \s* тоже самое, пустой массив PHP: /<i class="b-address__link-icon"><\/i>(.*?)<\/a>(.*?)<\/div>(.*?)<div class="b-serp-item__links">\s*<span class="b-serp-url b-serp-url_inline_yes">\s*<span class="b-serp-url__item">\s*<a href="(.*?)"class="b-serp-url__link"/s
Ооох. Это уже какая-то возня получается. Теперь вы удалили пробел перед class="b-serp-url__link"/s , который до этого там был. Разумеется, если добавлять такие маленькие описки в выражение, то оно никогда не заработает. PHP: <? $content = <<<EOF <div class="b-address"> <a href="//maps.yandex.ru/?where&ol=biz&oid=1008561375" class="b-address__link" onmousedown="w(this,'254.212.281');" target="_blank"><i class="b-address__link-icon"></i>Москва, ул. Хуторская 2-я, 34</a> +7 (495) 646-03-78 </div><div class="b-serp-item__links"> <span class="b-serp-url b-serp-url_inline_yes"> <span class="b-serp-url__item"><a href="http://www.kond.ru/" class="b-serp-url__link" onmousedown="w(this,'80.22.327','84=139,186=80,13=85');" target="_blank">kond.ru</a></span> </span> <span class="b-serp-url b-serp-url_inline_yes"> <span class="b-serp-url__item"><a href="/yandsearch?date=&text=%D0%BA%D0%BE%D0%BD%D0%B4%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%B5%D1%80&site=&rstr=-213&lang=all&within=0&from_day=&from_month=&from_year=&to_day=&to_month=&to_year=&mime=all&numdoc=50&lr=11470&tld=ua&ncrnd=5340" class="b-serp-url__link" onmousedown="w(this,'80.22.287','84=139');">Москва</a></span> </span> <span class="b-serp-item__links-item b-serp-item__links-saved"> <a class="b-serp-item__links-link" href="http://hghltd.yandex.net/yandbtm?fmode=inject&url=http%3A%2F%2Fwww.kond.ru%2F&text=%D0%BA%D0%BE%D0%BD%D0%B4%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%B5%D1%80&l10n=ru&sign=35fd01a00fc41fe7dc84e66467d6d758&keyno=0" onmousedown="w(this,'80.22.337','84=139');" target="_blank" title="Сохранённая копия страницы на сервере Яндекса">копия</a> </span> <span class="b-serp-item__links-item"> <a class="b-serp-item__links-link" href="/yandsearch?text=%D0%BA%D0%BE%D0%BD%D0%B4%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%B5%D1%80&rstr=0-1&site=kond.ru&lr=11470" onmousedown="w(this,'80.22.336','84=139');" title="Поискать «кондиционер» на сайте kond.ru">ещё</a> </span> </div> EOF; $pattern = '/<i class="b-address__link-icon"><\/i>(.*?)<\/a>(.*?)<\/div>(.*?)<div class="b-serp-item__links">\s*<span class="b-serp-url b-serp-url_inline_yes">\s*<span class="b-serp-url__item">\s*<a href="(.*?)" class="b-serp-url__link"/s'; preg_match($pattern, $content, $anls);