React Native App与WordPress对接:&符号显示异常问题求助
解决React Native中WordPress产品标题&符号显示为&的问题
这明显是HTML实体双重转义导致的问题——WordPress保存内容时会把&转成&,而API返回时又额外做了一次转义,最终变成了&。网站端的浏览器会自动解析多层HTML实体,所以显示正常,但React Native的Text组件不会自动处理这些编码,因此需要手动干预。
给你两个实用的解决方案,按需选择:
方案1:在React Native端手动解码HTML实体
如果不想改动WordPress端的配置,可以在RN里写一个简单的解码函数,处理标题中的实体字符。因为RN环境没有浏览器的DOM API,所以用正则替换的方式更稳妥:
// 定义解码函数 const decodeHtmlEntities = (str) => { if (!str) return ''; // 先替换&为&,再处理可能残留的& return str.replace(/&/g, '&') .replace(/&/g, '&'); }; // 渲染时使用 <Text>{decodeHtmlEntities(product.title.rendered)}</Text>
这个函数会把标题里的&和&都替换成正常的&,如果之后还有其他实体显示问题,也可以在函数里追加更多正则替换规则(比如<转<等)。
方案2:在WordPress API端修正输出
如果你有权限修改WordPress的代码,直接从源头解决问题会更彻底。在主题的functions.php文件中添加以下钩子,修改产品API的返回内容:
add_filter('rest_prepare_product', function($response, $post, $request) { // 获取产品的原始标题 $original_title = get_the_title($post->ID); // 解码一次HTML实体,避免双重转义 $fixed_title = html_entity_decode($original_title); // 更新API响应中的标题字段 $response->data['title']['rendered'] = $fixed_title; return $response; }, 10, 3);
这段代码会在WordPress返回产品API数据时,把标题的HTML实体解码一次,这样RN端拿到的就是直接的Small & Big Glass,无需额外处理就能正常显示。
内容的提问来源于stack exchange,提问作者juniorCoder
相关产品推荐
相关产品推荐

