我有一个html输出我正在从RSS提要中提取,它是这样的事情:
<div>
<p>
Some text
</p>
<iframe src="http://www.source.com"></iframe>
</div>
问题是我只需要iframe标签的attr“src”,有没有办法用PHP获取它?可能是正则表达式?
提前致谢!
答案 0 :(得分:3)
如果你一直只获得上面列出的数据,你可以使用一个简单的子字符串,使用src="
和"><iframe
的字符串位置来指定你想要的子字符串:
$html = '<div><p>Some text</p><iframe src="http://www.source.com"></iframe></div>';
$start = strpos($html, 'src="') + 5;
$length = strpos($html, '"></iframe') - $start;
$src = substr($html, $start, $length);
echo $src;
编辑 - 修复了代码并拆分成多行。这可能很容易成为一个单行,但是 - 如果我分成多行,就会更容易理解。
答案 1 :(得分:2)
答案 2 :(得分:0)
我不是正则表达式的专家,但另一种方法是在explode
标记上使用"
并获取array[1]
,如下所示:
$rssFeed = '<div>
<p>
Some text
</p>
<iframe src="http://www.source.com"></iframe>
</div>';
$rssArray = explode('"', $rssFeed);
echo $rssArray[1];
这要求你的RSS源非常一致,如果“Some text”部分包含"
标记,这会搞砸,你会得到一个错误的字符串。
你可以通过数组查看以http
或www
开头的所有内容来解决错误,但同样需要一个非常一致的RSS提要,所以你必须自己判断一下会做得很好。
答案 3 :(得分:0)
您可以使用一些命令行perl脚本解析此输出。这可能非常强大,具体取决于您使用正则表达式的一般方式。
例如,
$command = "echo your_html_output | perl -pe 's/src=\"(.*)\"/$1/'"; # Capture what is in between src=" and the " (the closing quote)
$output = shell_exec("$command");