1

つまり 、指定した文字列値の継続的な出現を単一の文字列値に変更します。すなわち

hello \t\t\t\t\t world \n\n\n\n\t\t\t

hello \t world \n\t

詳細に

\n\tExample\n\r\nto \nunderstand\n\r\n the current\n situatuion\t\t\t\t\t.

私は出力が欲しかった

 Example
to 
understand
 the current
 situation .

htmlで出力

<br /> Example<br />to <br />understand<br /> the current<br /> situation .

そして、私はこの出力を得ることができました

Example

to 
understand

the current
situatuion .

このコードで

$str='\n\tExample\n\r\nto \nunderstand\n\r\n the current\n situatuion\t\t\t\t\t.';


 echo str_replace(array('\n', '\r','\t','<br /><br />' ),
            array('<br />', '<br />',' ','<br />'), 
            $str);
4

2 に答える 2

0

この代替手段を試すことができます。

$string = "\n\tExample\n\r\nto \nunderstand\n\r\n the current\n situation\t\t\t\t\t.";

$replacement = preg_replace("/(\t)+/s", "$1", $string);

$replacement = preg_replace("/(\n\r|\n)+/s", '<br />', $string);

echo "$replacement";

#<br /> Example<br />to <br />understand<br /> the current<br /> situation

.

于 2013-10-28T19:00:48.860 に答える
0

、 、など\r\n、置き換えたい文字のサブセットがわかっている場合、単一の正規表現でそれらのすべての繰り返しインスタンスを同じものに置き換えるトリックを実行する必要があります。\n\t

/(\r\n|\n|\t)\1+/

これを PHP で使用してpreg_replace()、置換効果を得ることができます。

$str = preg_replace('/(\r\n|\n|\t)\1+/', '$1', $str);

次に、出力を「HTML フレンドリ」にするために、次のいずれかnl2br()またはstr_replace()(または両方)を使用して別のパスを作成できます。

// convert all newlines (\r\n, \n) to <br /> tags
$str = nl2br($str);

// convert all tabs and spaces to &nbsp;
$str = str_replace(array("\t", ' '), '&nbsp;', $str);

注として、\r\n|\n|\t上記の正規表現の を\sに置き換えて、「すべての空白」(通常のスペースを含む) を置き換えることができます。通常のスペースについて言及しなかったため、および置換するリストに追加の文字を追加したい場合に備えて、具体的に書きました。

EDIT\t上記の置換を更新して、コメントの説明ごとに 4 つのスペースではなく単一のスペースに置き換えました。

于 2013-10-28T18:32:03.127 に答える