php 正则表达式不起作用

php regex doesn't work

这是我的字符串

$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

感谢您的回答:)

好吧,我测试了这些代码,结果证明没问题:

$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;

请尝试一下。

要获得您在问题中提到的结果 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”中添加了一个 space

希望对您有所帮助。