以下是什么问题?它没有回应什么......
$string = '<embed src="http://www.youtube.com/v/XBH1dcHoL6Y&rel=0&hl=en_US&feature=player_embedded&version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></embed>';
preg_match('#<embed[^>]+>.+?http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?</embed>#s', $string, $matches);
echo $matches[1];
答案 0 :(得分:2)
因此:<embed[^>]+>.+?http
。这意味着:
<embed
>
>
http
您的字符串与这些条件不符,因为您的>
之前没有http
。如果删除正则表达式应匹配的[^>]+>
位。
现在您知道使用正则表达式解析HTML时遇到的一个问题。你不应该。您应该使用DOM解析器。
答案 1 :(得分:1)
实际上可以使用regexps解析html。看一下例如smarty-s来看看它如何解析标签:P但它不是这样做的方式。
尝试xmlparser或domdocument
答案 2 :(得分:0)
preg_match('#([\w\-]+){11}?#is', $string, $matches);