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

How do I extract the following information using PHP Regex / preg_match?

我有以下 HTML,我需要提取 VALUE

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

我尝试了以下方法,但没有成功。

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

我做错了什么?

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

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

问题在于没有在标签末尾转义 / 符号,并且 "' 可能没有任何原因彼此相邻。

我的正确变体:

$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,它允许 .* 紧凑,而不是 return 超过我们实际需要的数量。