php屏蔽电话号码中间四位示例

 更新时间:2016年11月25日 15:41  点击:2039
屏蔽电话号码中间数字这个我们在一些购物网站常见到的手法了,下面我利用正则表达式来实现,具体原理我也不说多了大家都知道的,这里直接给例子。

函数

 代码如下 复制代码

function hidtel($phone){
    $IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone); //固定电话
    if($IsWhat == 1){
        return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);
    }else{
        return  preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);
    }
}

示例:

$phonenum = "13966778888";
echo hidtel($phonenum);
最后输出:www.111cn.net 139****8888

例子

1、屏蔽手机号码中间段:

 代码如下 复制代码

preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);

2、屏蔽固定电话中间段:

 代码如下 复制代码

preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);

例如:

 代码如下 复制代码

$phone = '010-88888888-8';
$phone1 = '13888888888';

$phone = preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);
$phone1 = preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone1);

echo $phone,'<br>www.111Cn.net';
echo $phone1,'<br>';

结果输出:

138****8888
010-8****888

 

在php中要生成JSON数据是非常的简单的我们只要把数组利用json_encode函数就可以转换了,但在使用过程中会碰到中文乱码或中文为null我们直接使用utf-8编码就可以解决此问题了。

折腾了好久主题

结果发现本地搭的有问题

索性不折腾了?(?^?)?

在百度贴吧里POST的时候

经常要通过JSON获取一些值

那么PHP如何实现输出JSON数据呢?

其实PHP里已经有'json_encode'函数了

 代码如下 复制代码
<?php
$array = array(
'Newest_Ver' => 'None',
'API_List' => 'http://www.111cn.net/',
'Announcement' => 'None'
);
$result = json_encode($array);
echo $result;
?>

直接使用json_encode转换出来的中文会变成NULL的,urlencode后就不存在这个问题了。

json数据为乱码

生成json字符串的时候只能使用utf-8。不过可以用下面这个函数先实现utf8数组转码然后在直接使用json_encode():

 代码如下 复制代码

function output($arr = array()) {    return eval('return ' . iconv('GB2312', 'UTF-8', var_export($arr, true)) . ';');}

下面用php实现了一个对css进行压缩和解压缩的小程序,暂不适用于js的操作。通过这个案例可以学习php字符替换和正则替换的技术。

将css代码压缩能够减小文件的体积,从而减小了网络传输量和带宽占用,减小了服务器的处理的压力


源码:

 代码如下 复制代码


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<?php 

$string = trim(stripslashes($_POST['code'])); //stripslashes()函数删除转义字符(反斜杠)

if(!empty($string)){

if($_POST['method'] == '压缩' ){

$string = css_compress($string);

}elseif($_POST['method'] == '解压缩' ){

$string = css_decompress($string);

}

}else{

$string = '';

}

function css_compress($string){

//压缩

$string = str_replace("\r\n","",$string); //首先去掉换行

$string = preg_replace("/(\s*\{\s*)/","{",$string);

$string = preg_replace("/(\s*\;\s*\}\s*)/","}",$string); //去掉反括号首位的空格和换行,和最后一个;

$string = preg_replace("/(\s*\;\s*)/",";",$string);

return $string;

}

function css_decompress($string){

//解压

$string = css_compress($string); //为了效果更好,解压前,先压缩至最简状态

$string = str_replace("{","\r\n{\r\n\t",$string);

$string = str_replace("}","\r\n}\r\n\r\n",$string); 

$string = str_replace(";",";\r\n\t",$string);

$string = str_replace("*/","*/\r\n",$string);

return $string;

}

?>

<body>

  <div style="width:800px;height:500px;text-align:center">

  <p><strong>请将css代码粘贴到下面框中,然后选择压缩/解压缩</strong></p>

  <form action="" method="post" name="css_code">

    <textarea style="width:90%;height:460px;padding:5px;" name="code"><?php echo $string; ?></textarea>

    <br />

    <input type="submit" name="method" value="压缩" />

    <input type="submit" name="method" value="解压缩" />

  </form>

  </div>

</body>

</html>

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,格式如下:

可见请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。

Http请求方法和响应状态吗整理
HTTP请求方法:

    GET: 请求指定的页面信息,并返回实体主体。
    HEAD: 只请求页面的首部。
    POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
    PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
    DELETE: 请求服务器删除指定的页面。
    OPTIONS: 允许客户端查看服务器的性能。
    TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
    PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
    MOVE: 请求服务器将指定的页面移至另一个网络地址。
    COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
    LINK: 请求服务器建立链接关系。
    UNLINK: 断开链接关系。
    WRAPPED: 允许客户端发送经过封装的请求。
    Extension-mothed:在不改动协议的前提下,可增加另外的方法。


HTTP响应状态码:
① 客户方错误
100  继续
101  交换协议
② 成功
200  OK
201  已创建
202  接收
203  非认证信息
204  无内容
205  重置内容
206  部分内容
③ 重定向
300  多路选择
301  永久转移
302  暂时转移
303  参见其它
304  未修改(Not Modified)
305  使用代理
④ 客户方错误
400  错误请求(Bad Request)
401  未认证
402  需要付费
403  禁止(Forbidden)
404  未找到(Not Found)
405  方法不允许
406  不接受
407  需要代理认证
408  请求超时
409  冲突
410  失败
411  需要长度
412  条件失败
413  请求实体太大
414  请求URI太长
415  不支持媒体类型
⑤ 服务器错误
500  服务器内部错误
501  未实现(Not Implemented)
502  网关失败
504  网关超时
505 HTTP版本不支持

最近在开发站群软件,用到了根据访问域名判断子站点的相关问题。PHP获取当前域名有两个变量 HTTP_HOST 和 SERVER_NAME,我想知道两者的区别以及哪个更加可靠

先我想说,百度上那些转来转去的文章都是扯淡!
有说相同的,有说不同的,都没说明原因,没经过验证就互相转来转去的,浪费观众时间。

下面说说本人经过亲自验证 + 查阅官方文档 + 官方BUG列表 + 官方邮件列表 + sitepoint + webmasterworld + google的总结:

相同点:

当满足以下三个条件时,两者会输出相同信息。
1. 服务器为80端口
2. apache的conf中ServerName设置正确
3. HTTP/1.1协议规范

不同点:

1. 通常情况:

_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。

2. 当服务器为非80端口时:

_SERVER["HTTP_HOST"] 会输出端口号,例如:111cn.net:8080
_SERVER["SERVER_NAME"] 会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT

3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:

httpd.conf配置如下:

 代码如下 复制代码

<virtualhost *>
ServerName 111cn.net
ServerAlias www.111cn.net
</virtualhost>
客户端访问域名www.111cn.net
_SERVER["HTTP_HOST"] 输出 www.111cn.net
_SERVER["SERVER_NAME"] 输出 111cn.net

所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。

[!--infotagslink--]

相关文章