2012-04-06 3 views
0

改行を置き換えたい\n。 1つのオカレンスがある場合は、<br>に置き換えられます。 2つ以上連続している場合は、<br><br>に置き換えられます。私はどちらかを行うことができますが、私は同じ変数の両方を行う方法がわかりません。文字の単数または複数の置換

+0

あなたの質問はかなり漠然としており、あなたは私たちに検査するコードを提供していません。あなたはmysqlクエリから行を置換するこれをしようとしていますか? – Norse

+0

@Norse他に何もありません。 '\ n'が'
'に置き換えられた変数がある場合。 '\ n \ n'、' \ n \ n \ n'などがある場合は '

'に置き換えられます。 – qitch

答えて

4

同じ数の改行で2つ以上を置き換える場合は、str_replaceが機能するはずです。

$text = preg_replace('/\n{2,}/', "<br /><br />", $text); 
$text = str_replace("\n", '<br />', $text); 
+0

これはうまくいくが、彼はまた、3回以上の改行を置き換える方法も求めている。 – Norse

+0

{2、}は2つ以上を意味します。最初の例はすべて '\ n'を '
'に置き換え、2番目の例は2回以上連続して発生する '\ n'のすべてを '

'に置き換えて、単一オカレンスを置き換える最初のステップを実行します。 – Godwin

+0

ああ、私にはいいレッスンです! Upvote! – Norse

0

方法について:

str_replace("\n", '<br />', $text); 

しかし、もし、あなたが2つだけのラインで三個の改行文字を置き換えるために休憩したいあなたは、正規表現を使用して、2つの置き換え、少なくともいずれかを実行する必要があります:

$pattern = array("/\n\n+/", "/\n/"); 
$replacement = array('<br/><br/>', '<br/>'); 
$str = "The quick \nbrown fox \n\n\njumps over \n\nthe lazy dog."; 

$result = preg_replace($pattern, $replacement, $str); 

BR <場合だけBR > <で< BR/>を置き換えますは本当に欲しいものです。ゴドウィンのソリューションの(できればシンプルな)変形例として

0

、試してみてください。

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

これは残っている単一の改行がある場合は、その後、彼らは置き換えられます、2つの改行で任意の2つの連続改行を交換します一行改行。これは1、2、または3(またはそれ以上)の連続した改行の代入を実装します。

+0

これは3つの連続した改行文字を3つの改行で置き換えますが、@qitchは3つの改行を2つの改行で置き換えるソリューションを必要としていました。 – Godwin