2013-11-28 85 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 –