php中操作json格式数据转换实现代码

 更新时间:2016年11月25日 17:31  点击:2335
本文章主要是介绍了在php中操作json格式数据转换程序,我们利用了json_decode()和json_encode()这两个函数来进行操作方便很多,有需要学习的朋友可以参考一下本实例。

第一步我们利用json_encode()函数把数据转换成json数据

 代码如下 复制代码
<?php
//php中用数组表示JSON格式数据
$arr = array(
'firstname' => iconv('gb2312', 'utf-8', '非诚'),
'lastname' => iconv('gb2312', 'utf-8', '勿扰'),
'contact' => array(
'email' =>'fcwr@111cn.net',
'website' =>'http://www.111cn.net',
)
);
//将数组编码成JSON数据格式
$json_string = json_encode($arr);
//JSON格式数据可直接输出
echo $json_string;
?>

此转换函数只支持utf-8格式的如果中间有中文可以利用iconv或者mb转为UTF-8再进行json_encode,这样就不会有任何问题。

第二步,对数据进行解析我们也用一个php json处理函数json_decode()了,代码如下

 代码如下 复制代码
<?php
//php中用数组表示JSON格式数据
$arr = array(
'firstname' => iconv('gb2312', 'utf-8', '非诚'),
'lastname' => iconv('gb2312', 'utf-8', '勿扰'),
'contact' => array(
'email' =>'fcwr@111cn.net',
'website' =>'http://www.111cn.net',
)
);
//将数组编码成JSON数据格式
$json_string = json_encode($arr);
//将JSON格式数据进行解码,解码后不是JSON数据格式,不可用echo直接输出
$obj = json_decode($json_string);
//强制转化为数组格式
$arr = (array) $obj;
//按数组方式调用里面的数据
echo iconv('utf-8','gb2312',$arr['firstname']);
echo '</br>';
//输出数组结构
print_r($arr);
?>

好了实例就讲到了这里了关于
json_decode()参考 http://www.111cn.net/phper/18/32827.htm
json_encode()参考 http://www.111cn.net/phper/18/32827.htm

本文章介绍一篇较实用的文章关于php做站内搜索并高亮显示关键字,这个很多朋友直接利用preg_replace来操作,这是正确的哦,不过我觉得用str_replace更快一些哦。至于原因自己查查这两个函数的区别吧。

如何使用php做站内搜索并高亮显示关键字?

 代码如下 复制代码

<?php

       require_once 'sqlTools.class.php';//封装类,可执行dql、dml语句

       $info=$_POST['info'];

       $sql="select name,password,email from user_500 where name like '%$info%' or password like '%$info%' or email like '%$info%'";

       $sqlTools=new  SqlTools();

       $res=$sqlTools->execute_dql($sql);

       while ($row=mysql_fetch_assoc($res)){

              $row['name']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['name']);

              $row['password']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['password']);

              $row['email']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['email']);

              echo $row['name']."-->".$row['password']."-->".$row['email']."<br>";

       }   

?>

思路分析:

将sql语句中包含的%$info%交给DBMS执行的时候,他会查找字段中含有变量$info的值的信息,

%$info--->查找以$info的值结束的信息

$info%--->查找以$info的值开头的信息

 

通过正则函数preg_replace()将搜索到的关键字高亮显示,比如,

 

$row['name']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['name']);

的意思是:通过POST方接收到的值$info替换为加上样式(红色加粗)的结果,并将结果重新赋给$row[‘name’]

如果要搜索多个关键字的话,可以对接收到值$info进行分割,比如$info_more=explode(" ",$info);//这种方式能对以空格隔开的关键字进行分割,再对分割后的结果挨个进行查询,同样,可以使用正则表达式函数进行替换工作,以高亮显示关键字

 代码如下 复制代码

sqlTools.class.php的源代码:

<?php

       class SqlTools{

              private $host="localhost";

              private $dbname="test";

              private $dbuser="root";

              private $dbpwd="";

              private $conn;

              public function __construct(){

                     $this->conn=mysql_connect($this->host,$this->dbuser,$this->dbpwd);

                     if(!$this->conn){

                            die("连接数据库失败".mysql_error());

                     }

                     mysql_select_db($this->dbname,$this->conn) or die("找不到该数据库".mysql_error());

                     mysql_query("set names utf8");

              }

              public function execute_dml($sql){

                     $bool=mysql_query($sql);

                     if ($bool){

                            if ($bool>0) {

                                   return 1;

                            }else{

                                   return 2;

                            }

                     }else {

                            return 0;

                     }

              }

              public function execute_dql($sql){

                     $res=mysql_query($sql);

                     return $res;

              }

              public function close_conn(){

                     mysql_close($this->conn);

              }

       }

?>

PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)

使用php让浏览器刷新需要解决几个问题
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:

 代码如下 复制代码

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=5;// 每隔5s运行

//方法1--死循环
do{
 echo '测试'.time().'<br/>'; 
 sleep($interval);// 等待5s 
}while(true);

//方法2---sleep 定时执行
 require_once './curlClass.php';//引入文件
 
 $curl = new httpCurl();//实例化
 $stime = $curl->getmicrotime();
 for($i=0;$i<=10;$i++){
  
  echo '测试'.time().'<br/>'; 
  sleep($interval);// 等待5s
  
 }
 ob_flush();
 flush();
 $etime = $curl->getmicrotime();
 echo '<hr>';
 echo round(($etime-stime),4);//程序执行时间

本文章就介绍二个函数一个是验证IP地址,另一个是获取用户的真实IP地址的函数,也是常用的两个IP操作函数,有需要的同学可以参考一下。

获取用户真实IP地址

 代码如下 复制代码

function get_client_ip( )
{
        if ( getenv( "REMOTE_ADDR" ) && strcasecmp( getenv( "REMOTE_ADDR" ), "unknown" ) )
        {
                $onlineip = getenv( "REMOTE_ADDR" );
                return $onlineip;
        }
        if ( isset( $_SERVER['REMOTE_ADDR'] ) && $_SERVER['REMOTE_ADDR'] && strcasecmp( $_SERVER['REMOTE_ADDR'], "unknown" ) )
        {
                $onlineip = $_SERVER['REMOTE_ADDR'];
                return $onlineip;
        }
        if ( getenv( "HTTP_CLIENT_IP" ) && strcasecmp( getenv( "HTTP_CLIENT_IP" ), "unknown" ) )
        {
                $onlineip = getenv( "HTTP_CLIENT_IP" );
                return $onlineip;
        }
        if ( getenv( "HTTP_X_FORWARDED_FOR" ) && strcasecmp( getenv( "HTTP_X_FORWARDED_FOR" ), "unknown" ) )
        {
                $onlineip = getenv( "HTTP_X_FORWARDED_FOR" );
        }
        return $onlineip;
}

判断是否为IP地址

 代码如下 复制代码


function is_ip( $IP )
{
        $IP_ARRAY = explode( ".", $IP );
        $IP_ARRAY_NUM = sizeof( $IP_ARRAY );
        if ( $IP_ARRAY_NUM != 4 )
        {
                return FALSE;
        }
        $I = 0;
        for ( ;    $I < $IP_ARRAY_NUM;    ++$I    )
        {
                if ( !is_numeric( $IP_ARRAY[$I] ) && $IP_ARRAY[$I] < 0 || 255 < $IP_ARRAY[$I] )
                {
                        return FALSE;
                }
                if ( !( $I == 3 ) && !( $IP_ARRAY[$I] == 255 ) )
                {
                        continue;
                }
                return FALSE;
        }
        return TRUE;
}

文章介绍了三种常用的日期时间比较格式的函数,一个是对整日期,一个是只对时间比较,最后一个是专业比较时间差可以到秒。

日期比较如 2011-11-11  2011-12-12

 代码如下 复制代码
function compare_date( $DATE1, $DATE2 )
{
        $STR = strtok( $DATE1, "-" );
        $YEAR1 = $STR;
        $STR = strtok( "-" );
        $MON1 = $STR;
        $STR = strtok( "-" );
        $DAY1 = $STR;
        $STR = strtok( $DATE2, "-" );
        $YEAR2 = $STR;
        $STR = strtok( "-" );
        $MON2 = $STR;
        $STR = strtok( "-" );
        $DAY2 = $STR;
        if ( $YEAR2 < $YEAR1 )
        {
                return 1;
        }
        if ( $YEAR1 < $YEAR2 )
        {
                return -1;
        }
        if ( $MON2 < $MON1 )
        {
                return 1;
        }
        if ( $MON1 < $MON2 )
        {
                return -1;
        }
        if ( $DAY2 < $DAY1 )
        {
                return 1;
        }
        if ( $DAY1 < $DAY2 )
        {
                return -1;
        }
        return 0;
}

格式:12.00 -13.11

 代码如下 复制代码
function compare_time( $TIME1, $TIME2 )
{
        $STR = strtok( $TIME1, ":" );
        $HOUR1 = $STR;
        $STR = strtok( ":" );
        $MIN1 = $STR;
        $STR = strtok( ":" );
        $SEC1 = $STR;
        $STR = strtok( $TIME2, ":" );
        $HOUR2 = $STR;
        $STR = strtok( ":" );
        $MIN2 = $STR;
        $STR = strtok( ":" );
        $SEC2 = $STR;
        if ( $HOUR2 < $HOUR1 )
        {
                return 1;
        }
        if ( $HOUR1 < $HOUR2 )
        {
                return -1;
        }
        if ( $MIN2 < $MIN1 )
        {
                return 1;
        }
        if ( $MIN1 < $MIN2 )
        {
                return -1;
        }
        if ( $SEC2 < $SEC1 )
        {
                return 1;
        }
        if ( $SEC1 < $SEC2 )
        {
                return -1;
        }
        return 0;
}

格式:2011-11-12 1:6:25   ,2011-12-13 1:2:35

 代码如下 复制代码

function compare_date_time( $DATE_TIME1, $DATE_TIME2 )
{
        if ( $DATE_TIME1 == NULL || strlen( $DATE_TIME1 ) == 0 || $DATE_TIME2 == NULL || strlen( $DATE_TIME2 ) == 0 )
        {
                return -1;
        }
        $DATE_TIME1_ARRY = explode( " ", $DATE_TIME1 );
        $DATE_TIME2_ARRY = explode( " ", $DATE_TIME2 );
        if ( compare_date( $DATE_TIME1_ARRY[0], $DATE_TIME2_ARRY[0] ) == 1 )
        {
                return 1;
        }
        if ( compare_date( $DATE_TIME1_ARRY[0], $DATE_TIME2_ARRY[0] ) == 0 )
        {
                if ( compare_time( $DATE_TIME1_ARRY[1], $DATE_TIME2_ARRY[1] ) == 1 )
                {
                        return 1;
                }
                if ( compare_time( $DATE_TIME1_ARRY[1], $DATE_TIME2_ARRY[1] ) == 0 )
                {
                        return 0;
                }
                return -1;
        }
        return -1;
}

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • Javascript类型转换的规则实例解析

    这篇文章主要介绍了Javascript类型转换的规则实例解析,涉及到javascript类型转换相关知识,对本文感兴趣的朋友一起学习吧...2016-02-27
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • 美图秀秀把普通照片快速转换成卡通效果教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下把普通照片快速转换成卡通效果的教程,各位想知道具体制作步骤的使用者们,那么下面就快阿里跟着小编一起看一...2016-09-14
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21