str_replace不适用于不同行中的两个单词

时间:2014-07-15 08:28:04

标签: php string 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;
?>

这不是我的真实代码,但我可以使用此代码复制我的问题。我需要一个解决方案,即使没有换行也能正常工作。请帮帮我。

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

在您的第一个代码中,您的两个标记<br>由不可见的字符(\n)分隔,这就是为什么您的正则表达式(由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;
?>

答案 2 :(得分:0)

这是因为&#34;空间&#34;字符,使用rtrim删除它们:

$string = str_replace('<br><br>','text',rtrim($string));

请注意,它会删除 ALL 空格和换行符,因此它也会删除Hello之前的换行符。看看你需要做什么。

答案 3 :(得分:0)

因为没有&#39;
&#39;在第一个代码中。有

。它将查看确切的单词以进行更改。这意味着如果您的str_replace('<br><br>'代码中有空白,则可以使用。

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

答案 4 :(得分:0)

为中断创建一个数组并使用字符串进行检查。

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