PHP5.3 htmlentities与json_encode的坑

今天在线上使用了

json_encode(htmlentities($value))

发现出现了!

[03-Jul-2015 02:52:44 UTC] PHP Warning:  json_encode_plus() [<a href=‘function.json-encode-plus‘>function.json-encode-plus</a>]: Invalid UTF-8 sequence in argument in /home/users/ouerqiang/fbiz/framework/BizBootstrap.php on line 106

乍一看,不知道出现了什么问题,经过看来资料发现PHP 5.4之前的

htmlentities(string,quotestyle,character-set)

其中character-set=SO-8859-1。

如果里面有中文的话就就乱码了不能转义了,json_encode只认UTF-8.导致出现报错。

改为

htmlentities($instance,ENT_QUOTES ,‘UTF-8‘)

解决

时间: 2024-11-02 23:06:36

PHP5.3 htmlentities与json_encode的坑的相关文章

php5.4以下,json_encode不转义实现方法

function json_encode($input){ // 从 PHP 5.4.0 起, 增加了这个选项. if(defined('JSON_UNESCAPED_UNICODE')){ return json_encode($input, JSON_UNESCAPED_UNICODE); } if(is_string($input)){ $text = $input; $text = str_replace('\\', '\\\\', $text); $text = str_replace

PHP5.3中 in_array()的一个坑

因排查问题,发现目前生产环境的PHP版本5.3中有这个问题: //php5.3 echo PHP_INT_MAX; $str = "114100007160061630632"; $arr = array("114100007160061630631"); var_dump(in_array($str,$arr)); echo 'PHP:' .phpversion(); exit; 对于纯数字的非严格比较,因超出Int最大值,5.3中给出的是结果是 true. 5.

源码编译安装lnmp环境(nginx-1.14.2 + mysql-5.6.43 + php-5.6.30 )------踩了无数坑,重装了十几次服务器才会的,不容易啊!

安装顺序 php --- nginx -- mysql 安装php-5.6.30: 1 环境准备 yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel jemalloc jemalloc-devel y

PHP的json_encode中文被转码的问题

在php5.2中做json_encode的时候.中文会被unicode编码, php5.3加入了options参数, 5.4以后才加入JSON_UNESCAPED_UNICODE,这个参数,不需要做escape和unicode处理. 所以在5.4之前都需要对中文做个处理 5.4里面的处理  json_encode($str, JSON_UNESCAPED_UNICODE); 5.4之前,有两种方法处理  方法1 function encode_json($str){ $code = json_e

ctfhub技能树—信息泄露—PHPINFO

打开靶机 查看页面,是PHP info界面 只有这一个页面,查找一下有没有flag 拿到flag 浅谈ctf中phpinfo需要关注的点(转自先知社区) 1 https://xz.aliyun.com/t/6131 首先我们先谈谈 php各个版本的的差异 php5.2以前 __autoload()加载类文件,但只能调用一次这个函数,所以可以用spl_autoload_register()加载类 关于 autoload()函数,如果定义了该函数,该代码就会被调用 关于spl_autoload_re

PHP 小坑 mark(PHP json_encode 二维数组)

PHP json_encode 二维数组 eg: array( 3 => array( 'a' => 1, 'b' => 2, ), ); json_encode后 期望:数组类型 [{"a":"1","b":"2"}] 实际:对象类型 {"3": .....省略}

php5.4一下 json_encode 不转义中文

转载地址:http://www.nowamagic.net/php/php_FunctionJsonEncode.php 在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它. 这个函数的功能是将数值转换成json数据存储格式. 01 <?php 02 $arr = array 03        ( 04           'Name'=>'希亚', 05           'Age'=>2

linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦

一.Linux下安装MySQL 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads下载版本:我这里选择的5.6.33,通用版,linux下64位也可以直接复制64位的下载地址,通过命令下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz 2.卸载老版本MySQL find / -na

PHP5.3, PHP5.4, PHP5.5新特性

因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一些特性,有可能不全,待添加 PHP 5.3中的新特性 一.PHP 5.3中的新特性 1. 支持命名空间 (Namespace) 2. 支持延迟静态绑定(Late Static Binding) 3. 支持goto语句 4. 支持闭包.Lambda/Anonymous函数 5. 新增两个魔术方法__callStatic()和__invoke() 6.