Str_replace对不同行的两个单词不起作用


str_replace not working for two words in different lines

我有这样的代码:

<?php
$string = "<br>
<br>
Hello
";
$string = str_replace('<br><br>','text',$string);
echo $string;
?>

this is not working.

但这是可行的

<?php
$string = "<br><br>
Hello
";
$string = str_replace('<br><br>','text',$string);
echo $string;
?>

这不是我真正的代码,但我可以复制我的问题与这段代码。我需要一个解决方案,将工作,即使没有换行。

您可以在正则表达式模式之后使用preg_replace()和多行操作符m

$string = preg_replace('/(<br><br>){,2}/m', 'text', $string);

在您的第一个代码中,您的两个标签<br>由一个不可见的字符('n)分隔,这就是为什么您的regex(由str_replace生成)不起作用

这行不通

<?php
    $string = "<br>
    <br>
    Hello
    ";
    $string = str_replace('<br><br>','text',$string);
    echo $string;
?>

但是这段代码将:

<?php
    $string = "<br>".
    "<br>
    Hello
    ";
    $string = str_replace('<br><br>','text',$string);
    echo $string;
?>

这是因为"空格"字符,使用rtrim:

删除它们
$string = str_replace('<br><br>','text',rtrim($string));

注意,它将删除所有的空格和换行符,所以它也将删除Hello之前的换行符。看看你需要做什么。

因为第一个代码中没有'

'。有

。它会看准确的单词来改变。这意味着如果你在str_replace('<br><br>'代码中有一个空白,它将工作。

<?php
$string = "<br>
<br>
Hello
";
$string = str_replace('<br><br>','text',$string);
echo $string;
?>

创建一个break数组并使用string进行检查。

$breaks = array("'r'n", "'n", "'r");
$newtext = str_replace($breaks, "", $string);`