preg_match_all('/<p>.*:</p>/gm', $content, $matches);
var_dump($matches); //ouput is NULL
我想要这样的内容:<p>The Ideal Candidate:</p>
匹配而不是<p>Some more text</p>
。要求是它必须包含<p>
标记,后跟一些文字,最后它必须包含:
,后跟p标记的末尾(</p>
)。
注意:我尝试转义结束p标记,但它仍然无法正常工作。 更新的代码:
preg_match_all('/<p>.*:<\/p>/gm', "<p>The Ideal Candidate:</p>", $matches);
答案 0 :(得分:2)
转义/
或使用其他分隔符
/<p>(.*?:)<\/p>/m
或
#<p>(.*?:)</p>#m
测试:
preg_match_all('#<p>(.*?:)</p>#m', "<p>The Ideal Candidate:</p>", $m);
print_r($m)
<强>输出:强>
Array
(
[0] => Array
(
[0] => <p>The Ideal Candidate:</p>
)
[1] => Array
(
[0] => The Ideal Candidate:
)
)
答案 1 :(得分:2)
g
不是有效修饰符,请参阅PHP: Pattern modifiers。您应该密切关注PHP问题的警告。运行时
preg_match_all("/<p>.*:<\/p>/gm", "<p>The Ideal Candidate:</p>", $matches);
print_r($matches);
我得到了
警告:
preg_match_all()
:第1行命令行代码中的未知修饰符“g
”
而没有g
修饰符的同一行产生
Array
(
[0] => Array
(
[0] => <p>The Ideal Candidate:</p>
)
)