php regex不起作用

时间:2015-01-13 14:29:00

标签: php regex

这是我的字符串

$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

感谢您的回答:)

2 个答案:

答案 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'中添加了一个空格

希望这有帮助。