我有以下文字:
<!--:en-->
<!--:-->
我想构造一个模式来从字符串(PHP)中提取它。我尝试:
<!--:[a-z]{2}-->( \r\n\s)<!--:-->
但它不起作用,有人知道为什么或可以帮助我吗?
您需要转义特殊字符,例如连字符。尝试这个:
/<\!\-{2}\:[a-z]{2}\-\->(( |\s)*)<\!\-{2}\:\-{2}>/
如果我正确理解了你的问题,你必须匹配整个文本,包括评论。
所以,严格来说你的具体问题,我会使用类似的东西:
$s = "<!--:en-->
<!--:-->";
$a = array();
preg_match('/<!--:[a-z]{2}--> \\s+<!--:-->/', $s, $a);
for ($i = 0; $i < count($a); $i++) {
var_dump(htmlentities($a[$i]));
}
一般来说,我不会质疑你是否应该使用正则表达式解析 HTML,但是请注意,当 Colin 说用正则表达式实际解析 HTML 可能非常困难(读作“几乎不可能”)时,他是对的,因为他表示状态的帖子。