You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何移除print_r输出的换行生成单行格式日志

问题根源
  • 你写的str_replace('\n', ' | ', $postDataForLog)完全不会生效,因为PHP语法里单引号包裹的字符串不会解析转义序列,这里的'\n'是两个普通字符(反斜杠 + 小写n),根本匹配不到print_r返回值里的真实换行。
  • 跨平台场景下换行符并不统一:Windows系统的换行是\r\n,Linux/macOS是\n,仅匹配单一格式的换行也会存在兼容问题。
修复代码

基础可用版本

直接把待匹配的换行符换成双引号包裹的格式,同时兼容不同系统的换行字符:

$array = array('huey' => 'red', 'dewey' => 'blue', 'louie' => 'green', 'webby' => 'pink');
$postDataForLog = print_r($array, true);
$postDataForLog = str_replace(["\r", "\n"], ' | ', $postDataForLog);
log($postDataForLog);

优化版本

用正则匹配所有换行序列,顺带清理换行前后的多余空白,避免输出出现冗余的空分隔符,格式更规整:

$array = array('huey' => 'red', 'dewey' => 'blue', 'louie' => 'green', 'webby' => 'pink');
$postDataForLog = print_r($array, true);
$postDataForLog = preg_replace('/\s*[\r\n]+\s*/', ' | ', $postDataForLog);
log($postDataForLog);
输出效果

执行修复代码后,日志内容完全符合预期的单行格式:
Array | ( | [huey] => red | [dewey] => blue | [louie] => green | [webby] => pink | )

内容的提问来源于stack exchange,提问作者Shady Medic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 01:57:03