这是我的字符串
$var = 'foo<ul class="foo"> test </ul>foo<ul class="bar">foo</ul><ul></ul>foo';
这是我的正则表达式
/<ul[^>]*>.*?<\/ul>/g
这是我的代码
$var = preg_replace('/<ul[^>]*>.*?<\/ul>/', 'bar', $var);
我想将所有ul元素替换为bar,因此在此代码之后我的字符串应该如下所示
foo barfoo bar barfoo
它完全适用于regex101.com,但不会取代任何在php中 任何想法我的代码或正则表达式有什么问题?
//编辑
在回答之后,我尝试了这个并且工作然后我意识到我的原始字符串中有换行符。
所以我改变了我的正则表达式,现在可以正常工作
/<ul[^>]*>(.|\r|\n)*?<\/ul>/g
感谢您的回答:)
答案 0 :(得分:0)
好吧,我已经测试了那些代码,结果确定:
$var = 'foo<ul class="foo"> test </ul>foo<ul class="bar">foo</ul><ul></ul>foo';
$var = preg_replace('/<ul[^>]*>.*?<\/ul>/', 'bar', $var);
echo $var;
请试一试。
答案 1 :(得分:-1)
要获得问题foo barfoo bar barfoo
中提到的结果,请尝试按照
<?php
$var = 'foo<ul class="foo"> test </ul>foo<ul class="bar">foo</ul><ul></ul>foo';
$var = preg_replace('/<ul[^>]*>.*?<\/ul>/', ' bar', $var);
echo $var;
?>
我在替换字符串'bar'中添加了一个空格
希望这有帮助。