【发布时间】:2015-04-16 04:14:52
【问题描述】:
我正在创建一个小型 php 应用程序,它可以从远程网站提取数据,它工作得很好,但我想让它现在对用户更友好。
我需要从页面中获取一些特定项目,据我所知,当您查看源代码时,该页面看起来像一个 xml 文件,但它没有样式并且显示为纯文本,所以我没有真的不知道该怎么做。
我想要的页面是这样的
<channel>
<name>data</name>
<id>data</id>
<img>data</img>
<auther>data</auther>
<mp3>data</mp3>
<bio>data</bio>
</channel>
<channel>
<name>data</name>
<id>data</id>
<img>data</img>
<auther>data</auther>
<mp3>data</mp3>
<bio>data</bio>
</channel>
<channel>
<name>data</name>
<id>data</id>
<img>data</img>
<auther>data</auther>
<mp3>data</mp3>
<bio>data</bio>
</channel>
<channel>
<name>data</name>
<id>data</id>
<img>data</img>
<auther>data</auther>
<mp3>data</mp3>
<bio>data</bio>
</channel>
我需要从频道标签下的每个标签中获取所有数据,并将其保持在相同的顺序,以便以相同的方式将其回显到我自己的页面上。
我怎么能这样做?我尝试使用具有以下模式的正则表达式
$pattern = '<channel>
<name>(.*)</name>
<id>(.*)</id>
<img>(.*)</img>
<auther>(.*)</auther>
<mp3>(.*)</mp3>
<bio>(.*)</bio>
</channel>';
但这不起作用我真的需要最好和最简单的方法来做到这一点。
【问题讨论】:
-
也许
SimpleXMLElement会是从中获取数据的更好方法? -
你的意思是像 $xml = simplexml_load_string($input); $callback = $xml->{"name"};但是我将如何获取每个通道下的所有值并保持它们相同以再次回显,因为我认为只是让它们像这样可能会将其他渠道的东西混在一起吗?