Неужели так тяжело включить мозги и дать ВСЮ страницу и сказать какой именно момент нужно отпарсить, чтоб не растягивать на несколько страниц вытягивая с тебя по одному слову что тебе нужно.
Спасибо. Ссылки достаются, а как достать названия стран? Туго у меня идут эти регэкспы.. никак не могу разобраться.. Вот ещё вопрос: почему в preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m); выдирается именно ссылка, а не название? И рег выражения могут выдирать русские буквы?
Выдирается тут все, разберем регулярку: PHP: preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m); В $m[0] будут находится все ссылки с HTML тегами, в $m[1]; будут находится первые вхождения заключенные в фигурные скобки, тоесть все что подходит под (\d+\/) в нашем выражении, ну и в $m[2]; будет все что попадает под (.+?) Вообщем после регулярки напиши print_r($m); и сам все увидиш. Есесно '#[а-я]#i'
Спасибо. Вот ещё проблема.. С http://www.ozon.travel/countries/16644/ нужно выдернуть код страны. Как составить рег выражение? Составлял так: PHP: preg_match_all('/Код страны:<\/strong>(.*)<\/p>/',$out1, $regs1);
programming По идее, как ты составил должен выплевывать тебе символ новой строки + 3 табуляции. Там довольно редко стречается табуляция так что можно зацепиться за нее (Вообще можно просто искать по маске \+\d+ но не факт, что на странице не будет чего-то вроде +0, что не является кодом страны). Так что получается что-то вроде: Code: \t\t\t(\+\d+)</p>
Спасибо. Разобрался как выдергивать такие вещи. Появилась ещё большая проблема. Есть допустим http://www.ozon.travel/countries/1727/ и http://www.ozon.travel/countries/6675/ , а также остальные страны с http://www.ozon.travel/countries/. Каким образом возможно выдернуть описание с этих страниц? То есть, чтобы шаблон рег выражения подходил ко всем страницам стран. Выдернуть нужно только основное описание, то есть перелёты и т.д. не нужно.. Возможно ли такое осуществить?
programming По регулярке собираешь id всех страниц, затем перебирая их открываешь страницу http://www.ozon.travel/countries/{{ id }}/ и выдергиваешь оттуда описание. Id стран можно искать на странице http://www.ozon.travel/countries/ по регулярке: Code: <li><a href="(\d+)/"> Дальше уже ищешь полное описание и записываешь, допустим, для каждой страны в свой файл.
Это всё само собой понятно. Проблема вытащить само описание, а точнее составить регулярку, которая подходила бы ко всем странам.
Ну смотри в исходнике страницы за что можно зацепиться. Перед самим контентом можно зацепиться за класс breadcrumb, после контента за класс футера.
PHP: <?php ini_set('max_execution_time','0'); get_countries_info('http://www.ozon.travel/countries/1727/'); function get_countries_info($url) { $fp = file_get_contents($url); if(preg_match_all('#<p><strong>(.*): </strong>(.*)</p>#U', $fp, $m)) { foreach ($m[0] as $str) { echo strip_tags($str).'<br>'; } } if(preg_match_all('#</p><p><b>(.*)</b>(.*?)</p><h1>#', $fp, $m)) echo strip_tags($m[0][0]); } ?> Выводит: ЗЫ Функция выводит все в UTF-8 поетому если будеш использовать повставляй iconv() в нужных местах.
Всё-таки то, что хочу я, наверное, невозможно реализовать.. В случае с Данией действительно вырывается всё отлично. #</p><p><b>(.*)</b>(.*?)</p><h1># но что если в описании страны нет жирного шрифта?? В некоторых случаях он вообще не выдёргивает, в некоторых выдёргивает один абзац из нескольких, в котором есть жирный шрифт. В общем бред с этой задачей..
Как я заметил на всех страницах стиль оформления один, кинь мне несколько УРЛов где оформления разные, позже гляну.
В общем не могу придумать что делать с выдиранием описания.. А что если вырвать полное описание, а не первые абзацы? Например, на http://www.ozon.travel/countries/1032/ с Чем заняться путешественнику в Венгрии? Подлечиться-оздоровиться на термальных курортах, оценить далеко не бедную местную историческую «экскурсионку», а и до самого конца. Какую регулярку тогда составить? Проблему уже сам решил.
имеется html код Code: <p><h1>Заголовок</h1></p> <p>описание</p> <p> нужно выдрать заголовок и описание! Делаю вот так Code: '</h1></p><p>(.*?)<\/p><p>'; нифига не работает! делаю в делфи
SultanOFF Можешь выдирать отдельно или одной регуляркой. По отдельности: Code: Заголовок - '<h1>(.*?)</h1>' Описание - '</h1></p>\n<p>(.*?)</p>' У тебя в регулярке для описания не хватает символа новой строки (eol). Если одной регуляркой, то: Code: '<h1>(.*?)</h1></p>\n<p>(.*?)</p>'
Есть переменная. В ней html код. Нужно выдрать из него все ссылки. Но текст ссылки оставить. Как такое реализовать?
Вопрос не ясен, как ето "выдрать", если нужны только ссылки, тоесть то что находится в href='' то вот регулярка Или тебе нужно preg_replace сделать, и удалить все что в href но оставив <a>ссылку</a> ?