PHP json_encode输出空格异常:JS打字机显示\xa0而非空格
解决PHP转JS字符串时\xa0不显示为空格的问题
问题根源
你PHP里用单引号定义的$kallory = 'Word1\xa0Word2...';,单引号字符串里的\xa0不会被解析成实际的非断空格,只是字面的四个字符(\、x、a、0),所以json_encode后传到JS里还是这四个字符,前端自然会显示\xa0而不是空格。
修复步骤
1. 修正PHP端的字符串定义
把单引号改成双引号,这样\xa0会被PHP解析为实际的非断空格字符:
$kallory = "Word1\xa0Word2\xa0Word3\xa0Word4";
或者用chr(160)(非断空格的ASCII码)拼接字符串,彻底避免转义歧义:
$kallory = 'Word1' . chr(160) . 'Word2' . chr(160) . 'Word3' . chr(160) . 'Word4';
2. 调整JS端的文本插入方式(按需选择)
- 若用上述PHP修正后的非断空格字符,原JS代码的
innerText就能正常显示空格,无需修改。 - 若想直接用HTML实体
,PHP需定义为:
同时JS里要把$kallory = 'Word1 Word2 Word3 Word4';innerText改为innerHTML,让浏览器解析HTML实体:document.getElementById('typewriter').innerHTML += text2[index2];
额外说明
JSON_PRETTY_PRINT仅用于格式化JSON输出,和字符串转义逻辑无关,留或不留都不影响问题解决。
内容的提问来源于stack exchange,提问作者Andreas Thomsson
相关产品推荐
相关产品推荐

