Php 如何从RSS提要的描述字段中捕获特定数据?
我有一个我正在阅读的rss提要。我需要从这个提要中的字段中检索某些数据 这是示例提要数据:Php 如何从RSS提要的描述字段中捕获特定数据?,php,html,regex,rss,Php,Html,Regex,Rss,我有一个我正在阅读的rss提要。我需要从这个提要中的字段中检索某些数据 这是示例提要数据: <content:encoded><![CDATA[ <b>When:</b><br /> Weekly Event - Every Thursday: 1:30 PM to 3:30 PM (CT)<br /><br /> <b>Where:</b><br />
<content:encoded><![CDATA[
<b>When:</b><br />
Weekly Event - Every Thursday: 1:30 PM to 3:30 PM (CT)<br /><br />
<b>Where:</b><br />
100 West Street<BR>2nd floor<BR>Gainesville<BR>
<br>.....
如何分别提取时间:和地点:的数据?我试图使用正则表达式,但我不确定是否没有正确访问数据,或者正则表达式是否错误。我不想用正则表达式
这是我的代码:
foreach ($x->channel->item as $event) {
$eventCounter++;
$rowColor = ($eventCounter % 2 == 0) ? '#FFFFFF' : '#F1F1F1';
$content = $event->children('http://purl.org/rss/1.0/modules/content/');
$contents = $content->encoded;
echo '<tr style="background-color:' . $rowColor . '">';
echo '<td>';
//echo "<a id=buttonRed href='$event->link' title='$event->title' target='_blank'>" . $event->title . "</a>";
echo "" . $event->title . "";
echo '</td>';
echo '<td>';
$re = '%when\:\s*</b>\s*(.|\s)<br \/><br \/>$/i';
if (preg_match($re, $contents, $matches)) {
$date = $matches;
}
echo $date;
echo '</td>';
echo '<td>';
$re = '/^When\:<\/b>()$/';
if (preg_match($re, $contents, $matches)) {
$location = $matches;
}
echo $location;
echo '</td>';
echo '<td>';
echo "<a id=buttonRed href='$event->link' title='$event->title' target='_blank'>Click Here To Register</a>";
echo '</td>';
echo '</tr>';
}
这两个$res只是我尝试使用不同的正则表达式来获取数据。让我知道我哪里出错了。谢谢,请不要通过正则表达式从XML文档中提取数据 答案很长,例如:
简单的回答是:使用regex并不容易,而且会经常中断。我遇到了这样的问题,最终使用了。仔细看一下这里给出的页面抓取代码,尤其是select命令。然后进入并输入您自己的select语句,指定提要url和指向所需节点的url。选择JSON格式。然后转到页面的底部,获取REST查询url,并将其用在一个页面中。魔法 以下几点应该可以让你达到目的。这是我从头开始写的,它并不完全符合您的XML语法。但你明白了
<?php
$str = "<root><b>When:</b> whenwhen <b>Where:</b> wherewhere</root>";
$doc = new DOMDocument();
$doc->loadXML($str);
$when = $where = "";
$target = null;
foreach ($doc->documentElement->childNodes as $node) {
if ($node->tagName == "b") {
if (++$i == 1) {
$target = &$when;
} else {
$target = &$where;
}
}
if ($target !== null && $node->nodeType === XML_TEXT_NODE) {
$target .= $node->nodeValue;
}
}
var_dump($when, $where);
我不想使用正则表达式,只是无法正确检索数据,所以这是我的最新尝试。你有什么建议?也许这更适合作为一个评论,而不是一个答案?不要投他的反对票。他说他不喜欢雷格克斯的方式。让他看看你会怎么做。谢谢,乔纳森说的。我不是说我必须使用正则表达式。我首先也尝试了一些strpos,但加载不正确。“我只是想知道如何获取这些特定领域的数据。”乔纳森:他以前就被告知过。谢谢,我来看看这个。谢谢。这让我走上了正确的方向。我也很感谢你的回复,乔恩。