我需要Textarea以字符串[PHP]中的\ r \ n作为回车输出

时间:2017-09-20 01:09:24

标签: php string forms

我一直试图将我的文本区域输出到一个字符串,其中包含一个字符串中的\ r \ n回车符。

不,我不想要nl2br,我需要物理字符串。

文字区域文字示例:

All I want is a 
carriage return
to look like this

以PHP格式处理时输出

echo $_POST['text area'];

字符串需要像这样输出

All I want is a \rcarriage return \rto look like this

我已经在线查看并且遍布s​​tackoverflow并且无法找到有效的答案。

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您的字面意思是\r,那么请使用str_replace()并将第二个参数放在单引号中:

<?php
$string = "All I want is a 
carriage return
to look like this";
echo str_replace("
", '\r', $string);

Demo

否则,请使用双引号(您将获得实际的新行字符)

echo str_replace("
", "\r", $string);

答案 1 :(得分:1)

如果你希望有一个能够显示多行并且你想让它包含回车符的字符串,那么实际需要的是用回车符后跟换行符的行,结束的方式line在Windows环境中表示。

以下是一个例子:

<?php
$textarea = <<< HDOC
All I want is a 
carriage return
to look like this
HDOC;

$char = "";
$ascii = ord(PHP_EOL);

if ($ascii == 10) {
     $char = "\\n";
     $replaced = str_replace($char,"\\r".$char,$textarea);
     echo $replaced;
}

请参阅live code

我在代码中使用两个斜杠,以便PHP理解我引用回车字符本身,它由斜杠和字母r组成。如果没有额外的斜杠,PHP将无法识别斜杠标记,而是尝试生成回车符。

根据PHP中的PHP source code,特别是在php.h中,行尾符号指的是换行符,即&#34; \ n&#34;或者是回车后跟换行符,即&#34; \ r \ n&#34;。

顺便提一下,通过POSTed表单(以及GET)提交的所有数据都应被视为受到污染,直到经过验证或过滤,即至少您需要执行此类操作以避免潜在问题,例如跨站点脚本( XSS)。

<?php echo htmlentities( $_POST['text area'] );