PHP:json_encode困境,包含无效UTF8的字符串? utf8_encode每个字符串都可以吗?

时间:2015-07-11 04:19:53

标签: php string utf-8

这是关于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所有这些...

enter image description here

$ 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毫秒交易......嗯。

0 个答案:

没有答案