1

検索して検索しましたが、この問題を抱えているのは私だけのようです。そこで、この $_GET 変数から改行を変換したいと思います。これは私のURLです:

test.php?name=Line%201\nLine%202\rLine%203\r\nLine%204

私のコードで私が試した:

print nl2br($_GET['name']); //doesn't work

私も試しました:

print str_replace(array("\r\n", "\r", "\n"), "<br>", $name); //doesn't work

元の文字列 (Line 1\nLine 2\rLine 3\r\nLine 4\n) を変更せずに出力するたびに。ただし、渡されていない変数で試してみると、常に機能します。例えば:

$other = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
print `nl2br($_GET['name']);
print str_replace(array("\r\n", "\r", "\n"), "<br>", $other);

また、「サニタイズ」スクリプトがないか、他のスクリプトがまだそれを回避できない、まったく新しいドキュメントでこれを実行しようとしました...

4

3 に答える 3

3

を使用して、最初にこの var をデコードする必要がありますurldecode()。URLエンティティを実際の文字に変更します。

通常の文字列として置き換えてみてください。たとえば、str_replace(array("\\r\\n", "\\r", "\\n"), "<br>", $name); リテラルを置き換えます。\nnew line

于 2013-10-15T10:38:51.643 に答える
2

これは、送信された文字が改行ではなく文字どおり '\n' であるためだと思われます。

GET リクエストはおそらく次のようになりFirst+line%0ASecond+lineます。

リクエストを変更できない場合は、置換を変更してスラッシュをエスケープできます。

print str_replace(array("\\r\\n", "\\r", "\\n"), "<br>", $name);
于 2013-10-15T11:01:33.160 に答える
0

urldecode()デコードされた URL を文字列として返す関数を使用します。

<?php

echo urldecode('Line%201\nLine%202\rLine%203\r\nLine%204'); 

?>
于 2013-10-15T10:42:01.417 に答える