首页 > 解决方案 > 从 json 字符串中删除隐藏的中点字符

问题描述

发送一个 API 请求我得到一个 json 字符串作为答案,它似乎包含一个隐藏字符,一个中点 [·]。在我的 ATOM 编辑器中,该字符不可见,但尝试在中点之后删除该字符会导致没有可见动作,这表明它随后删除了中点。

将 json 字符串转换为 PHP 数组的问题导致数组的值为 NULL。

问题:

删除隐藏字符最直接的方法是什么?我应该搜索该字符并简单地从字符串中删除该字符吗?

我知道最好的办法是找到中点到达那里的根本原因,但我找不到根本原因。

调查和结果:

比较https://www.diffchecker.com/中的 [$body1] 和 [body2] ,它显示:

[$body1] ·'{"columns":"test"}'
[$body1] '{"columns":"test"}'

这个测试表明我确实有一个隐藏的角色。它可能无法在您的环境中进行测试,因为隐藏字符可能已通过复制/粘贴删除。

$body1 = '{"columns":"test"}'; // Hidden character.
$body2 = '{"columns":"test"}'; // Removed hidden character.
$body3 = '{"columns":"test"}'; // Same as body2.

var_dump(json_decode($body2, true));

if($body1 == $body2) {
    echo 'Content the same';
} else
    echo 'Content differs';

结果:

Content differs

检查正文字符串的字符串长度。

echo strlen($body1) . "\n";
echo strlen($body2) . "\n";
echo strlen($body3) . "\n";

结果:

21
18
18

标签: phpjsoncharacterhiddenjsondecoder

解决方案


推荐阅读