这是关于json_encode删除/取消包含非标准utf8字符串的值,如重音字符。
我已经为此阅读了许多不同的解决方案,并概念化创建了我自己的功能,这将自动为我做一个全面的解决方案。
顺便说一句,我只想要简单的英文字符串。
基本上我想要一个函数来替换json_encode,这个函数将有一个例程来纠正传递给它的字符串/对象,然后再传递给实际的json_encode函数。
所以问题是,对此最好的例程是什么?最好的是,它考虑到了最实用和最有效的方法。
例如,我已经创建了一个例程,我在其中分解字符串中的每个字符,评估它是否有效的utf8,如果没有对它进行编码..(这是由php.net上的一个用户示例的< / p>
这是一个字符检查和修复w / c似乎是防弹。
但我的问题是这会影响效果。
另一种方法是在传递的每个字符串上运行utf8_encode ..我想考虑检查每个值/字符串是否包含任何无效的UTF8字符,然后再运行utf8_encode()以节省开销。但话又说回来,每个&#34;检查&#34;例程本身也是一种开销。
首先检查真的有必要吗?如果我只是在通过函数传递的所有字符串上运行utf8_encode()而不管字符串是否需要任何utf8更正呢?
utf8_encode()是一个轻量级的函数吗?如果我通过utf8_encode()运行数百个字符串,是否会对性能产生重大影响? (就像我使用json输出的模板引擎)
寻找一些可靠的建议和反馈。
问候
---- ---- UPDATE
所以我注入了一个数组遍历递归函数来遍历所有对象和utf8_encode所有这些...
$ response是一个包含大约1000个节点的多维数组:
$response['stat']="ok";
$response['contacts'][0]['name']="Brad";
$response['contacts'][0]['email']="Brad@domain.com";
$response['contacts'][0]['number']="1800-55850";
$response['contacts'][1]['name']="Johj";
$response['contacts'][1]['email']="Johj@domain.com";
$response['contacts'][1]['number']="1800-7777";
......等等..
我的脚本时间结果如下:
没有utf8_encode锤击 - 第1次运行:0.86414098739624第二轮:0.86342883110046
第3次运行:0.88974404335022
用utf8_encode锤击 - 第1次运行:0.91330289840698
第二轮:0.90936899185181
第3次运行:0.89101815223694
约100毫秒交易......嗯。