2011-09-25 80 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; 
?>