1

文字列の配列をファイルに書き込み、ファイルを1行ずつ読み取ることができるPHPクラスを作成しています。

'\ n'のような特殊文字が、ファイルの形式をいじるのではなく、文字通りファイルに書き込まれるようにする必要があります。これは、一重引用符で囲まれた文字列を使用する場合にのみ機能するようです。

<?php
//EXAMPLE ONE - DOUBLE QUOTES ----------
$user_input = "This is the \n input.";
file_put_contents("input.txt", $user_input);
//OUTPUT
//
//This is the
// input.
//

//EXAMPLE TWO - SINGLE QUOTES ----------
$user_input = 'This is the \n input.';
file_put_contents("input.txt", $user_input);
//OUTPUT
//
//This is the \n input.
//
?>

$ user_inputが二重引用符で囲まれている場合でも、例2の出力をどのように実現できますか?

4

5 に答える 5

2

二重引用符を使用する場合、バックスラッシュ\文字を使用すると、特殊な使用法が有効になります。たとえば\n、改行(テキスト内)です。

テキストで実際の円記号を取得するには、次の2つを追加する必要があります。

$user_input = "This is the \\n input.";

バックスラッシュの使用法の詳細については、ドキュメントを確認してください。

于 2013-01-15T10:07:35.323 に答える
1

いいえ!あなたはそれをすることはできません。

マニュアルから:

文字列が二重引用符( ")で囲まれている場合、PHPは特殊文字のより多くのエスケープシーケンスを解釈します。

ダブルスラッシュを追加するなど、別の方法で作業する必要があります。

str_replace('\', '\\', $user_input);

これにより、すべての特殊文字がエスケープされます。これで、二重引用符がある場合は、必要な方法で表示されます。

または、この方法も実行できます...出力を印刷するときに、次の方法で特殊文字を文字にエスケープできます。

str_replace(array("\n", "\t"), array('\n', '\t'), $user_input);
于 2013-01-15T10:08:10.680 に答える
1

これは、\ nがここで改行文字として考慮されているために発生しているため、文字をエスケープします。\\nに変更します

str_replace("\n","\\n", $user_input);
于 2013-01-15T10:09:15.870 に答える
0

正解は次のとおりです。

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

改行文字を最も便利な置換と思われるスペースに置換します(ただし、文字列の将来の目的に応じて変更される可能性があります。HTMLで印刷する場合は、'<br>'置換する方がよいと言ってください) 。

引用符はそれとは何の関係もありませんが。これらはPHP構文の一部であり、ユーザー入力に特別な意味はありません。

于 2013-01-15T10:16:29.810 に答える
0
$user_input = "This is the \n input."

\特殊文字には使用する必要があります。印刷したいので、これを印刷text is 'abcd' here するために書く必要があります\'abcd\'

于 2014-08-16T12:05:36.833 に答える