我一直试图将我的文本区域输出到一个字符串,其中包含一个字符串中的\ 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
我已经在线查看并且遍布stackoverflow并且无法找到有效的答案。
提前致谢
答案 0 :(得分:1)
如果您的字面意思是\r
,那么请使用str_replace()
并将第二个参数放在单引号中:
<?php
$string = "All I want is a
carriage return
to look like this";
echo str_replace("
", '\r', $string);
否则,请使用双引号(您将获得实际的新行字符)
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'] );