如何用PHP explode将API返回的JSON转为数组并翻译非技术内容
嘿,这就帮你搞定这两个需求,分步骤来:
一、用PHP的explode函数处理JSON内容并转换为数组
首先得说清楚:直接对整个JSON字符串用explode拆分意义不大,因为会得到零散的片段。更实用的做法是先把JSON解析成PHP数组,再对特定的文本字段(比如领养流程的分段内容)用explode拆分,这样得到的数组更有业务价值。
下面是具体代码示例:
// 定义API返回的JSON字符串 $jsonData = '{"listings":[{"adoption_fee":"$200","adoption_process":"For cats, please fill out our <a href=\"http://www.haart.org.au/pre-adoption-form-cats/\">Pre-Adoption Questionnaire - Cats</a>.\r\n\r\nFor dogs, please fill out our <a href=\"http://www.haart.org.au/pre-adoption-form-dogs/\">Pre-Adoption Questionnaire - Dogs</a>.\r\n\r\nFor more information on our Adoption Process, please visit this <a href=\"http://www.haart.org.au/our-adoption-process/\">link</a>.\r\n\r\nPlease make sure that you are familiar with our <a href=\"http://www.haart.org.au/adoption-agreement/\">Adoption Agreement</a> as it has recently changed.\r\n\r\nFor more information on any of our animals, please <a href=\"http://www.haart.org.au/contact-us/\">Contact Us</a>.","age":"5 years 8 months","breeds":["Domestic Short Hair"],"breeds_display":"Domestic Short Hair","coat":"Short","contact_name":null,"contact_number":"08 6336 9410","contact_preferred_method":"Email","created_at":"2/9/2014 15:23","date_of_birth":"12/7/2012","desexed":true,"foster_needed":false,"gender":"Female","group":"Homeless and Abused Animal Rescue Team","heart_worm_treated":null,"id":316602,"interstate":false,"last_updated":"22/3/2018 9:40","medical_notes":"","microchip_number":"","mix":false,"multiple_animals":false,"name":"Whinney HC13-154","personality":"Whinney is an independent girl who likes ..."}]}'; // 步骤1:先将JSON解析为PHP关联数组(这是处理JSON的基础操作) $adoptionData = json_decode($jsonData, true); // 步骤2:对领养流程字段用explode按换行分隔符拆分为步骤数组 $adoptionSteps = []; if (isset($adoptionData['listings'][0]['adoption_process'])) { // 按\r\n\r\n拆分每个独立的流程说明 $adoptionSteps = explode("\r\n\r\n", $adoptionData['listings'][0]['adoption_process']); } // 如果你硬要对整个JSON字符串用explode(不推荐,仅满足要求) $rawSplitArray = explode('}', $jsonData);
说明:json_decode是PHP处理JSON的标准方式,之后用explode拆分特定字段的文本,能得到结构化的步骤数组,比直接拆分整个JSON实用得多。
二、非技术类文本翻译(保留技术术语、HTML标签等)
我已经把所有非技术描述性文本翻译成中文,同时严格保留了HTML标签、官方术语(如Pre-Adoption Questionnaire)、品种名、费用符号、日期格式等内容,翻译后的JSON如下:
{ "listings": [ { "adoption_fee": "$200", "adoption_process": "领养猫咪,请填写我们的<a href=\"http://www.haart.org.au/pre-adoption-form-cats/\">Pre-Adoption Questionnaire - Cats</a>。\r\n\r\n领养狗狗,请填写我们的<a href=\"http://www.haart.org.au/pre-adoption-form-dogs/\">Pre-Adoption Questionnaire - Dogs</a>。\r\n\r\n如需了解更多领养流程信息,请访问此<a href=\"http://www.haart.org.au/our-adoption-process/\">link</a>。\r\n\r\n请务必熟悉我们的<a href=\"http://www.haart.org.au/adoption-agreement/\">Adoption Agreement</a>,该协议近期已更新。\r\n\r\n如需了解任何动物的更多信息,请<a href=\"http://www.haart.org.au/contact-us/\">Contact Us</a>。", "age": "5岁8个月", "breeds": ["Domestic Short Hair"], "breeds_display": "Domestic Short Hair", "coat": "短毛", "contact_name": null, "contact_number": "08 6336 9410", "contact_preferred_method": "邮件", "created_at": "2/9/2014 15:23", "date_of_birth": "12/7/2012", "desexed": true, "foster_needed": false, "gender": "雌性", "group": "Homeless and Abused Animal Rescue Team", "heart_worm_treated": null, "id": 316602, "interstate": false, "last_updated": "22/3/2018 9:40", "medical_notes": "", "microchip_number": "", "mix": false, "multiple_animals": false, "name": "Whinney HC13-154", "personality": "Whinney是一只独立的小母猫,喜欢……" } ] }
翻译细节:
- 保留所有HTML标签、链接地址、技术字段名(如
desexed、microchip_number)、官方表单名称、机构名称; - 把日常描述文本(年龄、性别、流程说明)翻译成自然的中文;
- 品种名
Domestic Short Hair保留原文,避免翻译误差; Email翻译成“邮件”,更符合中文用户的阅读习惯。
内容的提问来源于stack exchange,提问作者Black Dog
相关产品推荐
相关产品推荐

