2013-10-15 36 views
1

我已经搜索和搜索,但似乎我是唯一有这个问题的人。所以我想从这个$ _GET变量中换行。 所以这是我的网址:

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 

每次它打印出原始字符串(行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); 

我也试图在tottaly新的文件,在这里我没有任何“消毒”脚本或其他任何脚本仍然存在不能得到这样做......

回答

2

我怀疑这是因为发送的字符是字面“\ n”不是一个换行符。

GET请求应该可能类似于First+line%0ASecond+line;

如果你不能改变的要求,您可以更改替换逃脱斜线:

print str_replace(array("\\r\\n", "\\r", "\\n"), "<br>", $name); 
+0

谢谢,确实是斜杠,没有来找我 –

+0

@justsomeguy没问题,很高兴我能帮上忙。 – Jim

3

你必须首先使用urldecode()来解码这个变种。它会将url实体更改为实际的字符。

尝试更换为普通字符串str_replace(array("\\r\\n", "\\r", "\\n"), "<br>", $name); 它会取代文字如\n,不new line

+1

我曾尝试已,不工作,也从PHP网站我看到他们说“超全局变量$ _GET和$ _REQUEST已经被解码,对$ _GET或$ _REQUEST中的元素使用urldecode()会产生意想不到的危险结果。“ –

+1

@justsomeguy显示'$ _GET'的'var_dump',但是从'view source'复制过来。 –

+0

嗯......它显示字符串(32) –

0

使用urldecode()函数返回解码URL作为一个字符串:

<?php 

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

?>