使用json_encode配合JSON_UNESCAPED_LINE_TERMINATORS标志可保留换行符原始形态,HTML中需用标签包裹;或用print_r结合htmlspecialchars与输出数组结构并维持换行显示。

如果您在将 PHP 数组转换为字符串(如 JSON、HTML 输出或日志记录)时发现原始数组中包含的换行符( 或 )被忽略或显示为普通空格,则可能是由于序列化方式、输出上下文或转义处理不当所致。以下是保留换行符的多种处理方法:
一、使用 json_encode 并启用 JSON_UNESCAPED_UNICODE 和 JSON_UNESCAPED_LINE_TERMINATORS
默认情况下,json_encode 会将换行符转义为 字符串形式,但该转义本身仍可被正确解析;若需在 HTML 中可视化解析换行,需配合 pre 标签或 CSS white-space 属性。启用 JSON_UNESCAPED_LINE_TERMINATORS 可避免对换行符做额外转义,保持其原始字节形态。
1、定义含换行符的数组,例如:$arr = ['name' => 'Alice', 'bio' => "Line one. Line two. Line three."];
2、调用 json_encode 并传入标志位:json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_LINE_TERMINATORS);
立即学习“PHP免费学习笔记(深入)”;
3、若用于 HTML 输出,将结果包裹在 登录后复制
二、使用 print_r 配合 htmlspecialchars 和
标签</h2> <p>print_r 默认以可读格式输出数组结构,天然保留换行;但直接输出到 HTML 会被浏览器折叠空白符,因此需结合 htmlspecialchars 转义特殊字符,并用 <pre class="brush:php;toolbar:false;"> 包裹维持排版。</p> <p>1、初始化目标数组,确保值中含 <strong> </strong>,如:<strong>$data = ['msg' => "First line. Second line. Third line."];</strong></p> <p>2、捕获 print_r 输出:<strong>$output = print_r($data, true);</strong></p> <p>3、对输出内容执行 HTML 实体转义:<strong>$safe_output = htmlspecialchars($output, ENT_QUOTES, 'UTF-8');</strong></p> <p>4、在 HTML 中输出:<strong><pre class="brush:php;toolbar:false;"><?php echo $safe_output; ?>
登录后复制
三、手动遍历拼接并显式保留 字符
当需将数组扁平化为单字符串且严格保留所有原始换行符时,可避免使用自动序列化函数,改用 foreach 遍历并控制分隔逻辑,对每个值不做 trim 或 str_replace 处理。
1、声明数组变量,其中字符串值明确包含 ,例如:$list = ["item1 sub1", "item2 sub2", "item3"];
2、初始化空字符串:$result = '';
标签: css php html js json 浏览器 字节 lsp
还木有评论哦,快来抢沙发吧~