PHP解析中文结构化文本生成指定格式JSON时中文Unicode转义如何解决
代码调整方案
调整后完整代码
<?php // 打开图书数据文件 $fh = fopen('Book.txt', 'r'); // 定义存储图书数据的空数组 $books = []; // 逐行读取文件内容 while ($line = fgets($fh)) { $trimmedLine = trim($line); if (empty($trimmedLine)) { continue; } // 按任意数量空白符分割行内容,兼容不同空格数量的情况 $lineData = preg_split('/\s+/', $trimmedLine); $books[] = [ 'title' => trim($lineData[0]), 'author' => trim($lineData[1]), 'type' => trim($lineData[2]), 'publishDate' => trim($lineData[3]), 'status' => trim($lineData[4]) ]; } fclose($fh); // 构造符合要求的外层结构 $result = ['books' => $books]; // 输出不转义中文的JSON,传入JSON_PRETTY_PRINT可实现格式化换行效果,不需要可删除该参数 echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); ?>
核心改动说明
- 新增外层结构包裹:将读取到的图书列表数组放到外层数组的
books键下,完全匹配需求的JSON结构 - 解决中文转义问题:调用
json_encode时传入JSON_UNESCAPED_UNICODE参数,PHP 5.4及以上版本均支持该参数,可直接输出原中文而不转为Unicode编码 - 优化分割逻辑:将原代码按固定两个空格分割的逻辑替换为正则匹配任意数量空白符,避免原始文本中空格数量不统一导致的分割错位问题
内容的提问来源于stack exchange,提问作者SAM_BOOM
相关产品推荐
相关产品推荐

