我正在尝试使用具有如下数据的PHP来废弃信息:
<br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry<a/>
我需要获得<br>
和<a>
标记之间的年份。我通过使用PHP Simple DOM HTML解析器获得了电影的标题。这是我用来解析标题的代码
foreach($dom->getElementsByTagName('a') as $link){
$title = $link->getAttribute('href');
}
我尝试使用:
$string = '<br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry<a/>';
$year = preg_match_all('/<br>(.*)<a>', $string);
但它找不到<br>
和<a>
标签之间的年份。有谁知道我可以做些什么才能找到这一年?
答案 0 :(得分:2)
试试这个:
<?php
$subject = '<br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry<a/>';
$pattern = '/<br>[0-9]{4}/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
请注意,如果以其他一些格式显示年份,您可以更改模式。如果您想查看两个标签之间的所有内容,可以使用$pattern = '/<br>.*<a/';
或任何其他适合您的标签。
答案 1 :(得分:1)
您正在使用的表达式:$year = preg_match_all('/<br>(.*)<a>', $string);
会在<br>
和<a>
之间找到文字,但在您的示例中,您在任何地方都没有<a>
。尝试在<br>
和<a
之间查找文字,如下所示:
$year = preg_match_all ('/<br>([^<]*)<a/', $string);
请注意,我还将.
更改为[^<]
,以确保它会停在下一个标记处,除此之外它会匹配这样的字符串:
<br>foo<br><br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry<a
因为它们以<br>
开头,以<a
结尾,但这可能不是您所需要的,任何一年都会是这样的:
foo<br><br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry