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
希望对您有所帮助。
这是我的字符串
$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
希望对您有所帮助。