preg_replace()问题

时间:2011-09-25 23:42:11

标签: php preg-replace

目前,我正在使用以下代码:

preg_replace('/\s+/m','<br>',$var);

<br>元素替换行结尾。我想要的一个例子:

Text Text Text
Text Text Text

Text Text Text

应该最终成为:

Text Text Text<br>Text Text Text<br><br>Text Text Text

这可以满足它的需要,但我想知道什么时候有一个双重空间并添加两个分隔线,而不是一个分隔线。如何保留单个断裂线的当前效果?

我不太熟悉preg_replace()如何工作,我实际上必须在这里得到帮助才能获得该功能。我看了一下PHP手册,这个功能看起来有点令人困惑。有谁知道我可以了解它如何正常工作的网站?

5 个答案:

答案 0 :(得分:1)

你可以通过将 g - 修饰符添加到preg_replace来实现这一点,如下所示:

preg_replace('/\s+/mg','<br>',$var);

preg代表Perl正则表达式 - 您将在此搜索字符串中找到更多示例,例如: this sitethis site(我实际上不确定, m -modifier的作用是什么?)

或者,您可以使用简单的$var = str_replace(' ', '<br', $var)。我不确定哪一个更快。

修改:如果您想用html-breaks替换换行符,请使用nl2br()函数。

答案 1 :(得分:1)

php有一个内置的功能

echo nl2br( $var );

这是\ n,\ r \ n,\ r和\ n \ r

http://www.php.net/manual/en/function.nl2br.php

答案 2 :(得分:1)

您可以使用<br />

简单地replace每个行尾字符preg_replace
$var = str_replace(array("\r\n", "\n"), '<br />', $var);

无需使用正则表达式,但如果您真的需要,可以使用{{3}}来达到同样的效果:

$var = preg_replace("/\r?\n/", '<br />', $var);

答案 3 :(得分:0)

看看这个。不确定你是否要求,但至少它对我有用

$input = <<<DOC
Test Test Test
Test Test Test

Test Test Test
DOC;
$output = preg_replace("/$/m","<br/>",$input);
echo $output;

Hovewer,nl2br也是如此。

答案 4 :(得分:0)

这是你想要做的吗?

<?php
$text = <<<EndText
Text Text Text
Text Text Text

Text Text Text
EndText;

$text = str_replace("\r", "", $text);
$text = str_replace("\n", "<br>", $text);

echo $text;
?>