如何使用 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 超过我们实际需要的数量。
我有以下 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 超过我们实际需要的数量。