我正在尝试匹配PHP中的下一个表达式:
preg_match( '#<head>([\s\S]*)</head>#' , $this -> $html_file_content , $match );
没有成功。
$this -> $html_file_content
包含有效的HTML代码,<head>
块不为空。
这个正则表达式在JavaScript中非常有用。
我已经尝试了下一个版本:
#<head>([.\s\S]*)</head>#
#<head>([.\s\S]+)</head>#
#<head>([\s\S]*)<\/head>#
#<head>([\s\S]+)<\/head>#
所有这些都在JavaScript中运行良好。我只是想不通,为什么PHP中没有匹配。
你们能帮助我处理它吗?
答案 0 :(得分:1)
我无法重现这一点,所以我的猜测是$this -> $html_file_content
应该是
$this -> html_file_content
如果不起作用,可以尝试使用SimpleXML
,假设内容格式正确。
$html = new SimpleXMLElement($html_file_content);
$head = "" . $html->head;
“你不应该使用正则表达式来解析HTML”的常见答案是错误的。据我所知,你没有尝试parse HTML;你只想从已知的分隔符中提取字符串值。如果分隔符是[head]...[/head]
答案 1 :(得分:0)
你说必须只有更多的太空元素,但你需要有任何文字,包括空格试试这个(。*?)我没试过,但我希望这是正确的
/&LT(*); /头&GT; /