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
相关产品推荐
相关产品推荐

