我有这样的代码:
<?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);`