2013-11-28 111 views
-1

我想給什麼,我需要能夠做到,在希望有人可以點我在正確的方向解析字符串響應HTTP

我準備了HTTP要求的URL一個基本的例子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

的第一步是要弄清楚如何生成的自動頁面實現一致的元素結構。無論參數如何,每個頁面都實施3次「s4-wpcell-plain」類,第三種實現包含列車時刻表數據。我會從那裏開始。 –

回答

0

您可以使用Regular Expressions爲此目的。這裏有一些很好的入門指南,用於php下的正則表達式。

您還可以使用DOM解析器像phpQuery它通過讓模仿的jQuery的行爲您查詢DOM使用css選擇器

+0

HTML不是常規的語言,它不是jQuery的行爲(本身),那些是CSS選擇器和Sizzle.js。 –

2

它看起來像是HTML的結果。在這種情況下,您需要創建一個DOMDocument(有關該主題的所有PHP文檔,請參閱http://us1.php.net/book.dom),並以此方式進行處理。

你的第一步將是這樣的:現在

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

,你可以操縱「$文件」使用它的成員函數。例如,爲了讓所有的「TD」的實例,你可以撥打:

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

(有關該功能的詳細信息,請參閱http://us1.php.net/manual/en/domdocument.getelementsbytagname.php。)

+0

我有警告:DOMDocument :: loadHTML()[domdocument.loadhtml]:標記即:menuitem實體中無效 –

+0

當有「不完美」的HTML時,DOMDocument將打印警告;只要你能夠得到你想要的東西,這沒什麼大不了的。錯字發生了,一些網站的格式很差。要使警告「消失」,只需在函數調用之前放置「@」即可。例如,「@ $ document-> loadHtml($ content)」 –

+0

感謝像charme –