使用 $_GET 字符串传递换行符

3

我需要将一个字符串传递给一个表单。 我想以以下方式混合使用 $_GET 和 $_POST:

 <?php $string="bla bla bla".$some_other_string."bla bla".$some_other_string2."\n"; ?>

 <form action="this_page.php?string=<?php echo $string?>" method="post" name="name">

 </form>

请注意字符串中的\n。当我获取$_GET("string")(或 $_REQUEST("string"))时,会发生以下情况:php解析器将\n视为字符串。因此,它将其放入字符串中,就像我编码的那样:\\\n,这不是我想要的结果。我只想在php字符串中保留一个内部的\n
请您能否解释一下为什么会出现这种行为,而不是抱怨这不是传递字符串的最佳方式(我想这确实不是最佳方式,但今天我遇到了问题,所以我希望通过这种方式来管理该字符串)?
附言:我必须使用\n而不是html的<br />,因为我必须让php写入文件。

我不太明白问题出在哪里,但是尝试使用echo urlencode($string),它应该可以解决你所有的问题。 - Vyktor
问题基本上是我想在文件中写入一个字符串,并且我想使用换行符进行格式化,我想通过 $_GET 在 action url 中传递它。由于某种原因,/n 最终以两个字符 /n 的形式出现在字符串中,而不是作为新行。 - il_maniscalco
1个回答

6

建议: 你最好考虑将它放入隐藏字段中

回答: 但是,如果你要将其作为GET参数实现,那么你需要对字符串进行urlencode编码:

<form action="this_page.php?string=<?php echo urlencode($string); ?>" method="post" name="name">

这样做可以使任何非字母数字字符成为URL安全的(考虑一下如果$string包含?、#或=会发生什么)。

PHP在将GET参数加载到$_GET数组中时会自动解码它们 - 因此,在那个点上应该保留您的换行符。


urlencode函数起作用了,太好了,我现在知道如何做了。 - il_maniscalco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接