1

「正規表現」を使用してPHPの\nOR \rOR IN出力を出力するにはどうすればよいですか?\n\r

バックラッシュは2倍にすべきだとわかっているのですが、できませんでした。

マイコード

preg_replace('/(\n|\r)/', '?', $String );
4

3 に答える 3

4

使用するだけstr_replace()- 正規表現は必要ありません:

$H = str_replace( "\n", '\n', $H);
$H = str_replace( "\r", '\r', $H);

または、Mark が指摘するように、1 回の呼び出しで:

$H = str_replace( array( "\n", "\r"), array( '\n', '\r'), $H);

または、次の 2 つの不要な正規表現を使用します。

$H = preg_replace( "/\n/", '\n', $H);
$H = preg_replace( "/\r/", '\r', $H);

または、1 つの正規表現といくつかの追加ロジック:

$H = preg_replace_callback( "/(\n|\r)/", function( $match) {
    return $match[1] == "\n" ? '\n' : '\r';
}, $H);
于 2012-10-30T17:02:06.790 に答える
0

これを試してください、これはあなたが探しているものかもしれません...

$String = preg_replace('/\\n/', '\\n', $String ); 
echo preg_replace('/\\r/', '\\r', $String );
于 2012-10-30T17:20:49.380 に答える
0

これはあなたが出力しようとしているものですか?

$H = "This is a line with \\n and \\r  and \\r\\n";
$H = "This is a line with " . '\n and ' . '\r and ' . '\r\n'; 

または、単に文字列全体を単一引用符で囲んで、php がエスケープを評価しないようにします ...

$H = 'This is a line with \n and  \r and  \r\n';

リテラル '\n' '\r' または '\r\n' を出力するために RegEx は必要ありません。

二重引用符で囲まれた文字列エスケープを二重バックスラッシュするか、リテラルを出力する文字列を単一引用符で囲みます。

于 2012-10-30T17:17:14.353 に答える