Php RegExp混淆行为
我正在尝试匹配PHP中的下一个表达式:Php RegExp混淆行为,php,regex,Php,Regex,我正在尝试匹配PHP中的下一个表达式: preg_match( '#<head>([\s\S]*)</head>#' , $this -> $html_file_content , $match ); 它们在JavaScript中都工作得很好。我就是不明白,为什么PHP中没有匹配项 伙计们,你们能帮我处理一下吗?我不能复制这个,所以我猜$this->$html\u文件内容应该是 $this -> html_file_content 如果不起作用,可以使用S
preg_match( '#<head>([\s\S]*)</head>#' , $this -> $html_file_content , $match );
它们在JavaScript中都工作得很好。我就是不明白,为什么PHP中没有匹配项
伙计们,你们能帮我处理一下吗?我不能复制这个,所以我猜
$this->$html\u文件内容应该是
$this -> html_file_content
如果不起作用,可以使用SimpleXML
尝试,假设内容格式正确
$html = new SimpleXMLElement($html_file_content);
$head = "" . $html->head;
“您不应该使用正则表达式解析HTML”的常见答案是错误的。据我所知,你并不是在尝试使用HTML;您只需要从已知的分隔符中提取字符串值。如果分隔符是[head]…[/head]
没有人会说任何话。你说必须有更多的空格元素,但你需要包含空格的任何文本。试试这个(.*)我没有试过,但我希望这是正确的
/(.*)/请同时发布$this->$html\u文件内容的值
一般回答:您不应该使用正则表达式来处理html。使用DOM:@MichaelSazonov haha,可能是$this->$html\u文件内容
,因为它通常应该是$this->$html\u文件内容
(从类变量中删除的最后一个$
)。除此之外,您应该使用DOM。^^不要使用正则表达式来解析HTML。您无法使用正则表达式可靠地解析HTML,并且您将面临悲伤和挫折。一旦HTML与您的预期不同,您的代码将被破坏。有关如何使用PHP mod正确解析HTML的示例,请参阅已经编写、测试和调试过的ULE。事实上,您的猜测是正确的。在编写了一整天之后,我根本看不到这样的错误…符号$
不应该在那里。
将不匹配没有s
修饰符的换行符事实上,[\s]*
匹配所有字符,包括空格
$html = new SimpleXMLElement($html_file_content);
$head = "" . $html->head;