2011-09-25 52 views
0

目前,我用下面的代码:的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手册,其功能似乎有点令人困惑。有谁知道一个网站,我可以了解它如何正确工作?

+0

那么,你真的想实现什么?用'br'替换'$ var'中的换行符? – J0HN

+0

什么是文本/字符串的编码/字符集? – hakre

回答

1

你可以简单地replace每行末尾字符用<br />

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

有没有必要使用正则表达式,但如果你真的愿意,你可以使用preg_replace来达到同样的效果:

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

只有preg_replace函数可以工作,但这就是我所需要的。谢谢。 – Phillip

+0

@Phillip'str_replace'也应该可以正常工作。你能否详细说明“它如何不起作用”?在我的系统上,var_export(str_replace(array(“\ r \ n”,“\ n”),'
',“a \ n \ r \ nb”)); '正确输出''

b''。 – phihag

+0

在使用您提供的'str_replace()'时,它不包含任何'
'标签。它将所有内容视为空白。 – Phillip

1

您可以通过添加 -modifier到的preg_replace像这样做:

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

预浸代表Perl的正则表达式 - 你会发现这个搜索字符串,例如多了很多的例子this sitethis site(实际上,我不清楚,什么 -modifier呢?)

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

编辑:如果要用html-breaks替换换行符,请使用nl2br()函数。

1

PHP有一个内置的功能,这

echo nl2br($var); 

这样做\ n,\ r \ n \ r和\ n \ r

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

+0

当我使用它时,实际上有一些错误的功能。这是一些严重的问题,检测到双重破裂,我无法使用它。我可能以某种方式实现了它(我怎么会不知道),但我不得不使用preg_replace选项,它的工作非常好。 – Phillip

0

退房这一个。不知道你是问为,但至少它为我的作品

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

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

Hovewer,nl2br不一样的。

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; 
?>