PHP處理JSON字符串key缺少雙引號的解決方法
主要介紹了PHP處理JSON字符串key缺少雙引號的解決方法,是非常常見的一類錯誤處理情況,需要的朋友可以參考下希望對大家有所幫助!
本文實例講述了PHP處理JSON字符串key缺少引號的`解決方法,分享給大家供大家參考之用。具體方法如下:
通常來説,JSON字符串是key:value形式的字符串,正常key是由雙引號括起來的。
例如:
<?php
$data = array('name'=>'fdipzone');
echo json_encode($data); // {"name":"fdipzone"}
print_r(json_decode(json_encode($data), true)); //Array ( [name] => fdipzone )
?>
但如果json字符串的key缺少雙引括起來,則json_decode會失敗。
<?php
$str = '{"name":"fdipzone"}';
var_dump(json_decode($str, true)); // array(1) { ["name"]=> string(8) "fdipzone" }
$str1 = '{name:"fdipzone"}';
var_dump(json_decode($str1, true)); // NULL
?>
解決方法:判斷是否存在缺少雙引括起來的key,如缺少則先用正則替換為"key",再進行json_decode操作。
<?php
/** 兼容key沒有雙引括起來的JSON字符串解析
* @param String $str JSON字符串
* @param boolean $mod true:Array,false:Object
* @return Array/Object
*/
function ext_json_decode($str, $mode=false){
if(preg_match('/w:/', $str)){
$str = preg_replace('/(w+):/is', '"$1":', $str);
}
return json_decode($str, $mode);
}
$str = '{"name":"fdipzone"}';
var_dump(ext_json_decode($str, true)); // array(1) { ["name"]=> string(8) "fdipzone" }
$str1 = '{name:"fdipzone"}';
var_dump(ext_json_decode($str1, true)); // array(1) { ["name"]=> string(8) "fdipzone" }
?>
-
php統計數組元素個數的方法
PHP是一種HTML內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的.風格有類似於C語言,被廣泛地運用。下面是小編為大家搜索整理的php統計數組元素個數的方法,希望大家能有所收穫,更多精彩內容請及時關注我們應屆畢業生考試網!count():對數組中的元...
-
如何運用PHP實現字符串逆序排列
如何運用PHP實現字符串逆序排列呢?下面是小編給大家提供的實現方法,大家可以參考練習,更多詳情請關注應屆畢業生考試網。關於字符串的逆序排列,最簡單的使用PHP函數strrev()的測試代碼如下:header('Content-type:text/html;charset=utf-8');$str=implode(&...
-
php遞歸創建和刪除文件夾的代碼
php中遞歸創建和刪除文件夾的代碼,供大家學習參考。就跟隨本站小編一起去了解下吧,想了解更多相關信息請持續關注我們應屆畢業生考試網!方法一複製代碼代碼如下:<?php/***目錄生成類:UtilsMakeDir*@authoryepeng*@since2010.3.18*/classUtilsMakeDir{//基目錄建...
-
PHP正則匹配中文字母數字正則的表達式
PHP語言是一門實用性很強的語言,下面小編為大家帶來了關於PHP正則匹配中文字母數字正則的'表達式,歡迎大家閲讀!PHP正則匹配中文字母數字正則的表達式代碼如下if(preg_match("/^d*$/","4312")){echo"全數字";}if(preg_match("/^[a-z]*$/i","fdsFDfd")){echo"全...