2013-11-28 4 views
-1

Я собираюсь дать простой пример того, что мне нужно, чтобы быть в состоянии сделать, в надежде, что кто-то может мне точку в правильном направленииразбор строки ответ HTTP

Я подготовить URL, необходимый для HTTP GET запрос на получение данных (поезда между пунктами назначения, просто набрав имя станций) из oncf.ma

Я использовал cURL для этой цели, но ответ является строкой. Вот код, я использовал,

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_URL,'www.oncf.ma/Pages/ResultatsHoraire.aspx?depart=BERRECHID&arrivee=BENGUERIR&CodeRD=0093&CodeGD=00183&CodeRA=0093&CodeGA=00120&heure=0000&date=19/11/2013'); 
$content = curl_exec($ch); 
echo $content; 

Что мне нужно сделать, что я не знаю, как это сделать, как можно манипулировать строку, чтобы получить только потребности в данных и не все HTML разбора строки.

ответ изменение если изменить параметры.

+0

Ваш первый шаг, чтобы выяснить, каким образом генерируется автоматически страница реализует согласованные структуры элементов. Класс 's4-wpcell-plain' реализуется 3 раза на каждой странице независимо от параметров, а третья реализация содержит данные по расписанию поездов. Я бы начал там. –

ответ

0

Для этой цели можно использовать Regular Expressions. Вот несколько полезных руководств по началу работы для regex под php.

Вы также можете использовать DOM Parser как phpQuery, имитирующей поведение JQuery, позволяя запрашивать DOM используя css селекторы

+0

HTML не является обычным языком, и это не поведение jQuery (как таковое), это селектор CSS и Sizzle.js. –

0

Используйте XPath для запроса DOM и извлечения данных, которые вы хотите обработать. См. Пример «php xpath table parsing question».

2

Похоже, что результатом является HTML. В этом случае вы захотите создать DOMDocument (см. http://us1.php.net/book.dom для всей документации PHP по этой теме) и обработать его таким образом.

Ваш первый шаг будет выглядеть следующим образом:

$document = new DOMDocument(); 
$document->loadHtml($content); 

Теперь вы можете манипулировать «$» документ с помощью функции его членов. Например, чтобы получить все «ТД» экземпляров, можно назвать:

$elements = $document->getElementsByTagName("td"); 

(см http://us1.php.net/manual/en/domdocument.getelementsbytagname.php для получения дополнительной информации о данной функции.)

+0

У меня есть предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: тег ie: menuitem недействителен в Entity –

+0

DOMDocument печатает предупреждения, когда есть «несовершенный» HTML; пока вы можете добраться до того, что хотите, это неважно. Опечатки происходят, и некоторые сайты просто плохо отформатированы. Чтобы предупреждения «уходили», просто поставьте «@» перед вызовом функции.Например, «@ $ document-> loadHtml ($ content)» –

+0

спасибо, как charme –

Смежные вопросы