Ярославль


  Ответ в темуСоздание новой темыСоздание опроса

Как вытащить текст с сайта

max2005
Дата 9.12.2008 - 10:33
Цитировать сообщение




Unregistered












Задача:

Вытащить текст с сайта www.moysait.ru, который находится между тегами
Код
<div class="content"> ... </div>
и
Код
<span id="cid'> ... </span>


Из первого тега в одну переменную, из второго в другую
Top
Rebe
Дата 9.12.2008 - 11:00
Цитировать сообщение




Unregistered












Как-то так.
Код

$html = file_get_contents('http://domain.com');
preg_match('/<div class="content">(\w.+)<\/div>/', $html, $matches);
preg_match('/<span id="cid">(\w.+)<\/span>/', $html, $matches2);


С правилами, может быть, еще нужно поиграться.
Top
max2005
Дата 9.12.2008 - 11:40
Цитировать сообщение




Unregistered












получилось, спасибо !

Вот еще задачка ... точней нюанс

Как вытащить текст, если один из параметров "плавает" ?

Например вытащить Template из:


Код
<span id="cid" class="Template"> ... </span>
и из
Код
<span class="Template" id="cid"> ... </span>


т.е. в тексте тега параметр находится в разном месте
Top
max2005
Дата 9.12.2008 - 11:44
Цитировать сообщение




Unregistered












поправка, вытащить надо именно из того <span>, где есть id="cid"
Top
Rebe
Дата 9.12.2008 - 11:54
Цитировать сообщение




Unregistered












Ну, если параметр c неизвестным именем, то можно просто сделать так:
Код

preg_match('/<span (\w.+)id="cid"(\w.+)>(?P<content>\w.+)<\/span>/', $html, $matches2);


Единственное, что я не помню, поддерживает ли PHP именованые параметры. Может быть ?P<content> придется стереть нафиг.

В конкретном же случае, выражение будет выглядеть как:
Код

preg_match('/<span(( class="Template")??) id="cid"(( class="Template")??)>(\w.+)<\/span>/', $html, $matches2);


Update:
первый регексп не пашет

Это сообщение отредактировал Rebe - 9.12.2008 - 11:59
Top
max2005
Дата 9.12.2008 - 12:00
Цитировать сообщение




Unregistered












Не получается, надо только слово Template вытащить ....

sad.gif
Top
Rebe
Дата 9.12.2008 - 12:12
Цитировать сообщение




Unregistered












preg_match('/<span(( class="Template")??) id="cid"(( class="Template")??)>(.+)<\/span>/', $html, $matches2);

Вот такое попробуй.
Top
Rebe
Дата 9.12.2008 - 12:17
Цитировать сообщение




Unregistered












Да... ПХП туп. Он не обрабатывет данные условия как надо. Ща посмотрим че можно сделать.
Top
Rebe
Дата 9.12.2008 - 12:26
Цитировать сообщение




Unregistered












Код

preg_match('/<span((.+)??)id="cid"((.+)??)>(.+)<\/span>/', $html, $matches2);


Это должно работать при любом раскладе
Top
Rebe
Дата 9.12.2008 - 12:27
Цитировать сообщение




Unregistered












Первы элемент в массиве - контент блока.

Это сообщение отредактировал Rebe - 9.12.2008 - 12:27
Top
max2005
Дата 9.12.2008 - 13:32
Цитировать сообщение




Unregistered












Rebe, спасибо большое! Разобрался !
Top

Опции темы Ответ в темуСоздание новой темыСоздание опроса

 



[ Время генерации скрипта: 0.0122 ]   [ Использовано запросов: 16 ]   [ GZIP включён ]



Яндекс.Метрика

Правила Ярпортала (включая политику обработки персональных данных)

Все вопросы: yaroslavl@bk.ru