将jsonp转为PHP数组和对象。
/** * jsonp转数组|Jsonp转json * @param string $jsonp jsonp字符串 * @param bool $assoc true转数组 false转对象 * @return array|ArrayObject|null */ function jsonp_decode($jsonp, $assoc = false) { $pattern = '/\((.*)\)/s'; if (preg_match($pattern, $jsonp, $matches)) { if (!empty($matches['1'])) { return json_decode($matches['1'], $assoc); } return null; } return null; }
使用实例:
//jsonp字符串 $jsonp = 'callbackFunction(["customername1","customername2"])'; //jsonp转数组 $jsonp_result = jsonp_decode($jsonp,true); var_dump($jsonp_result);
转换结果:
array(2) { [0]=> string(13) "customername1" [1]=> string(13) "customername2" }
也可以试试下面的这个方法,宇润写的,我没有测试:
/** * 把jsonp转为php数组 * @param string $jsonp jsonp字符串 * @param boolean $assoc 当该参数为true时,将返回array而非object * @return array */ function jsonp_decode($jsonp, $assoc = false) { $jsonp = trim($jsonp); if(isset($jsonp[0]) && $jsonp[0] !== '[' && $jsonp[0] !== '{') { $begin = strpos($jsonp, '('); if(false !== $begin) { $end = strrpos($jsonp, ')'); if(false !== $end) { $jsonp = substr($jsonp, $begin + 1, $end - $begin - 1); } } } return json_decode($jsonp, $assoc); }
<?php function go($str) { echo'I\'m '.$str; } $goto='go'; $goto('gaojiufeng'...
//参数1 文件名 参数2 缩放比例 function _thumb($_filename,$_percent){ ob_clean();...
php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class studen...
ThinkPHP中有一个debug调试功能,能输出报错文件的信息,并能看到这个函数被哪些函数调用,从框架的启动开始记录,特别方便调试。于是研究了下它的底层给予了实现。<?php //--框架核心--Start //框架内置错误处理 function errDealWith($er...
在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) { pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...
<?php $member = new class { public function getInfo() { ...