我在这里有下一个问题。我尝试使用preg_match / preg_match_all在两个HTML注释标记之间获取字符串,但我得到的结果是带有大量记录的空数组。
这是我的代码:
$pattern = "/\<!-- Start of NewsTicker --\>(.*)\<!-- End of NewsTicker --\>/";
preg_match_all($pattern, $description , $matches);
正则表达式模式本身似乎是有效的,因为当我在$ description变量中的两个标签之间放置一个简短的示例字符串(如:&#34; 123456&#34;)时,它对我有用。
然而,对于现实生活中的内容,它并不起作用,我的猜测是因为内容的长度而发生这种情况。
以下是preg_match对我失败的真实案例: http://www.phpliveregex.com/p/6oJ
请问有人可以解释问题是如何解决的吗? 总是可以使用strpos,substr等简单的字符串函数,但是还有其他更好的选择吗?
非常感谢!
答案 0 :(得分:3)
你应该添加&#34;匹配换行符&#34; flag,s
。
所以你的正则表达式应该如下:
$pattern = "/\<!-- Start of NewsTicker --\>(.*)\<!-- End of NewsTicker--\>/s";
答案 1 :(得分:0)
是否已尝试转义反斜杠和其他特殊字符?此外,在处理预格式化文本或RegEx时,通常最好使用单引号。
像这样:$pattern = '/\\<\!-- Start of NewsTicker --\\>(.*)\\<\!-- End of NewsTicker --\\>/'
preg_match_all($pattern, $description , $matches);
也很有帮助:overapi.com/regex/