如何使用PHP Regex / preg_match提取以下信息?

时间:2015-01-21 21:35:12

标签: php regex preg-match

我有以下HTML,我需要在VALUE中提取网址

<param name="movie" value="http://domain.com/path/to/file.swf" />

我尝试了以下操作,但没有成功。

preg_match("'<param name=\"movie\" value=\"(.*?)\" />si'", $source,  $url); 
echo $url[1];

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果你真的想使用preg_match,你可以这样做:

preg_match('/<param name=\"movie\" value=\"(.*?)\" \/>/is', $source, $url);
echo $url[1]

问题在于没有转移标记末尾的/符号,并且您的"'彼此相邻,而且可能没有任何理由。

答案 1 :(得分:0)

我的,正确的变体:

$source = '<param name="movie" value="http://domain.com/path/to/file.swf" />';

preg_match('!<param name="movie" value="(.*?)"!U', $source,  $url); 
echo $url[1];

结果:

http://domain.com/path/to/file.swf

请注意修饰符U,这意味着Ungreedy,它允许.*紧凑并且不会返回超出实际需要的数量。