使用 ob_get_clean() 和 json_encode 使用 PHP 为 XHR 请求创建响应时,响应包含不必要的新行(/r,/n)和制表符(/t)。它们对用户没有明显的目的,但无论如何都会消耗带宽。
删除它们可以str_replace
解决问题,同时会导致另一个问题:它还删除了 textareas 中必要的换行符。
header("Content-Type: application/json; charset=utf-8");
ob_start();
echo "
test
<textarea>
</textarea>
test
";
$test = json_encode(ob_get_clean());
echo $test;
输出:
\r\ntest\r\n<textarea>\/r\/n<\/textarea>\r\ntest\r\n
使用 str_replace 删除它们:
header("Content-Type: application/json; charset=utf-8");
ob_start();
echo "
test
<textarea>
</textarea>
test
";
$test = ob_get_clean();
$test = str_replace(PHP_EOL, NULL, $test);
$test = json_encode($test);
echo $test;
输出:
test<textarea><\/textarea>test
然而:
如何在不弄乱文本区域的情况下摆脱/r /n和/t ?
更公开地问:
是否有另一种(或更好的)解决方案将多行 html 元素附加到除ob_start()
and之外的变量ob_get_clean()
?