PHP使用JSON实例分析详解
在PHP编码JSON(json_encode)
PHP json_encode()函数用于在PHP JSON编码。这个函数成功返回JSON表示的值,失败则返回FALSE。
语法:
string json_encode ( $value [, $options = 0 ] )参数:
value: 即将编码的值,此函数只适用于UTF-8编码的数据。
options: 这个可选的值是一个位掩码,由JSON_HEX_TAG JSON_HEX_QUOT,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,JSON_FORCE_OBJECT
例子
下面的例子演示了如何用PHP数组转换成JSON:
代码如下 | 复制代码 |
<?php 在执行过程中,这将产生以下结果: {"a":1,"b":2,"c":3,"d":4,"e":5} |
下面的示例显示如何将PHP对象可以转换成JSON:
代码如下 | 复制代码 |
<?php echo json_encode($e); 在执行过程中,这将产生以下结果: {"name":"sachin","hobbies":"sports","birthdate":"08/05/1974 12:20:03 pm"} |
解码JSON在PHP(json_decode)
PHP json_decode()函数用于解码JSON在PHP。这个函数返回值从json解码成适当的 PHP类型。
语法:
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])参数:
json_string: 它必须是UTF-8编码的数据编码的字符串
assoc: 这是一个布尔类型参数设置为TRUE时,返回的对象将被转换成关联数组
depth: 它是一个整数类型的参数,它指定递归深度
options: 它是一个整数类型的位掩码JSON解码,支持JSON_BIGINT_AS_STRING
例子
下面的示例显示了如何可以使用PHP来解码JSON对象:
代码如下 | 复制代码 |
<?php var_dump(json_decode($json)); 在执行过程中,这将产生以下结果: object(stdClass)#1 (5) { array(5) { |
假如我们获取的JSON数据如下:(可以使用curl、fsockopen等方式获取)
代码如下 | 复制代码 |
{ 用json_decode函数返回array的方式得到: Array |
我们在PHP语言中可以用以下方法取得我们想要的值:
代码如下 | 复制代码 |
<?php |
例,结合数据库操作
代码如下 | 复制代码 |
<?php
?> </body> |
一、__FILE__与dirname(__FILE__)与basename(__FILE__)使用:
通常在配置文件路径的时候用dirname(__FILE__)是非常有效的方法,但是因为__FILE__的路径是当前代码所在文件(而不是url所在文件)完整路径,所以定义配置文件通常要放在根目录下定义网站的根地址,但是下面的方法可以解决配置文件的存放问题。
代码如下 | 复制代码 |
1.dirname(dirname(__FILE__)); /* 2. 3.假设__FILE__为 /home/web/config/config.php 4.上面的方法输出为 /home/web 5.*/ |
dirname(dirname(__FILE__));得到的是文件上一层目录名
dirname(__FILE__);得到的是文件所在层目录名
假设现在的目录及文件结构如下,我们所要测试的变量在wp_smtp_admin.php文件中:
wp-content\plugins\wp-smtp\wp-smtp.php
wp-content\plugins\wp-smtp\wp_smtp_admin.php
wp-content\plugins\wp-smtp\img\blq_32_32.jpg
测试结果如下:
代码如下 | 复制代码 |
echo __FILE__ . "<br />"; //输出 F:\xampp\htdocs\wordpress\wp-content\plugins\wp-smtp\wp_smtp_admin.php echo plugin_basename(__FILE__) . "<br />"; //输出 wp-smtp/wp_smtp_admin.php |
好了现在我们来看看这dirname与basename相关说明
dirname() 函数返回路径中的目录部分。
basename() 函数返回路径中的文件名部分。
从这里我们就不难看出上面的结果了。
利用php来采集图片方法很简单本实例使用了fopen来保存文件了,但在此一聚教程小编建义大家不要使用此方法来获取,如果数据量大量fopen函数性能比curl差得远了,所以大家可尝试改进使用curl来处理。代码如下 | 复制代码 |
<?php 1、获取目标网站图片地址。 2、读取图片内容。 3、创建要保存图片的路径并命名图片名称。 4、写入图片内容。 5、完成。 我们通过写几个函数来实现这一过程。*/ //函数make_dir()建立目录。判断要保存的图片文件目录是否存在,如果不存在则创建目录,并且将目录设置为可写权限。 //函数read_filetext()取得图片内容。使用fopen打开图片文件,然后fread读取图片文件内容。
//然后我们通过分析页面内容,将主体内容找出来,调用get_pic()实现图片的保存。 //我们采集太平洋电脑网上一篇关于手机报道内容页的图片 php100.com $content = file_get_contents($url);//获取网页内容 /* |
自定义的一个函数
代码如下 | 复制代码 |
function StripHTML($string){ |
除了上面自定的函数之外还有一个php自带的过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。
如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写:
代码如下 | 复制代码 |
strip_tags(string,"<img>"); |
过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,则可以这样写:
代码如下 | 复制代码 |
strip_tags(string,"<img><p><b>"); |
网上找到一个防sql注入函数
代码如下 | 复制代码 |
//php 批量过滤post,get敏感数据 function stripslashes_array(&$array) { // 替换HTML尾标签,为过滤服务 www.111cn.net return $str; } |
使用方法
代码如下 | 复制代码 |
引用是直接这样: |
早年使用php的时候还不知道有filter这玩意,那时候判断邮箱、url和ip地址格式是否符合都是用正则表达式。后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库filter来完成这些功能。
1、验证邮箱
先来看原始的正则验证
代码如下 | 复制代码 |
<?php |
再看filter这玩意
代码如下 | 复制代码 |
$email = 'sjlinyu@qq.com'; $result = filter_var($email, FILTER_VALIDATE_EMAIL); var_dump($result); //string(14) "sjlinyu@qq.com" |
对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false。
感觉后者更简单一些哦
2、验证url地址
正则验证
代码如下 | 复制代码 |
<?php |
filter_var函数
代码如下 | 复制代码 |
$url = "http://www.111cn.net"; $result = filter_var($url, FILTER_VALIDATE_URL); var_dump($result); //string(22) "http://www.111cn.net" |
3、验证ip地址
正则验证函数
代码如下 | 复制代码 |
/**
|
此函数验证
代码如下 | 复制代码 |
$url = "192.168.1.110"; $result = filter_var($url, FILTER_VALIDATE_IP); var_dump($result); //string(13) "192.168.1.110" |
值的一提的是,这方法也可以用来验证ipv6。
代码如下 | 复制代码 |
$url = "2001:DB8:2de::e13"; $result = filter_var($url, FILTER_VALIDATE_IP); var_dump($result); //string(17) "2001:DB8:2de::e13" |
验证数值是否为整数,并且在一个整数区间内
代码如下 | 复制代码 |
$result = filter_var( $i, FILTER_VALIDATE_INT, //设定校验的数值范围 array( 'options' => array('min_range' => 1, 'max_range' => 100) ) ); var_dump($result);//bool(false) |
php的变量是弱类型,如果不用过滤器,直接使用大于小于符号判断的话会是真的。
代码如下 | 复制代码 |
$result = $i >= 1 && $i <= 100; var_dump($result);//bool(true) |
5、验证浮点数
代码如下 | 复制代码 |
$result = filter_var($float, FILTER_VALIDATE_FLOAT); var_dump($result); //float(12.312) |
在做一些金额方面的验证时,经常需要验证金额是否为浮点数。
总结
php中的filter过滤器虽然比较冷门,但是功能还是蛮强大的。除了上述这些功能外,还有一些过滤输入的功能,可查阅php手册。
相关文章
- 有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
- ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。  ...2017-07-06
- 许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
使用insertAfter()方法在现有元素后添加一个新元素
复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
使用percona-toolkit操作MySQL的实用命令小结
1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24如何使用php脚本给html中引用的js和css路径打上版本号
在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24jQuery 1.9使用$.support替代$.browser的使用方法
jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31- 一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24- C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
- 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
- 无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
- php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
- 前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08
- 因此,正确的原子操作是真正被执行过的。是物理执行。在当前事务中确实能看到插入的记录。最后只不过删除了。但是AUTO_INCREMENT不会应删除而改变值。1、为什么auto_increament没有回滚?因为innodb的auto_increament的...2014-05-31
- Promise是异步编程的一种解决方案,在ES6中Promise被列为了正式规范,统一了用法,原生提供了Promise对象。接下来通过本文给大家介绍Promise的介绍及基本用法,感兴趣的朋友一起看看吧...2021-10-21
- 基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之后,表单的提交地址就会修改为page_two.html 复制...2014-06-07
- mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。应用比较多的地方是 mysqli的事务。...2013-10-02
Postman安装与使用详细教程 附postman离线安装包
这篇文章主要介绍了Postman安装与使用详细教程 附postman离线安装包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05