php手机号中间几位替换星号实例

 更新时间:2016年11月25日 15:00  点击:1449
今天小编来给各位同学介绍利用preg_replace函数把手机号码中间指定几伴替换成星号了,这个在很多网站 都会有这样做,下面我来介绍实例方法。


正则表达式方法

1、字符串中包含多个手机号码

 代码如下 复制代码

<?php
$s='王经理:13999312365 李经理:13588958741';
$s=preg_replace('#(d{3})d{5}(d{3})#', '${1}*****${2}', $s);
echo $s;
//王经理:139*****365 李经理:135*****741
?>

2、字符串中只有一个手机号码

 代码如下 复制代码

<?php
$haoma="15012345678";
echo preg_replace("/(d{3})d{5}/","$1*****",$haoma);
//150*****678
?>

不用正则表达式实现
1、使用substr_replace字符串部分替换函数

 代码如下 复制代码

<?php
$string1="13264309555";
echo substr_replace($string1,'*****',3,5);
//132*****555
?>

2、使用字符串截取函数substr

 代码如下 复制代码

<?php
echo substr($string1,0,3)."*****".substr($string1,8,3);
//132*****555
?>

在php中session是一个服务器全局变量可以实现页面之间传递了,所以session常用于服务器端用户会员登录验证,session的安全性也是非常高的,下面我来介绍一下关于php session基础知识。

大家对session有什么看法?不知道大家有没有研究过,今天达内php培训老师想要为大家分享一些有关这方面的内容,希望大家能够喜欢。
 
session 的生命周期是多长

1 浏览器结束时其生命周期也同时结束,但是档案仍然存在于 /tmp/(sess_???)
 
2 下次重新开浏览器时会重新分配 sessionID,如果你使用 session_id() 把以前的 ID 带回来,则会去读取残存在 /tmp 处的 sess_???, 取回你之前所有已经设定的参数
 
3 可以在 PHP.ini 里修改 session 档案残存的时间
 
 session.gc_maxlifetime = 1440 ; after this number of seconds, stored
 data will be seen as 'garbage' and
 cleaned up by the gc process
  默认是 1440 秒,24分钟
 
使用 session 注意的存储路径问题
 
看看 php.ini 里对于 session 的设置
 
 [Session]
 session.save_handler = files ; handler used to store/retrieve data
 session.save_path = /tmp ; argument passed to save_handler
 in the case of files, this is the
 path where data files are stored

默认是存于 /tmp 目录下,这个目录可不一定真有啊!!! 最好改为你的 php 安装路径,比如 c:/php


彻底理解PHP的SESSION机制 1.session.save_handler = files

    * 1. session_start()
         1. session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,
PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php.ini的配置决定的,
但是有的系统是 session.gc_probability = 0,这也就是说概率是0,而是通过cron脚本来实现垃圾回收。

            session.gc_probability = 1
            session.gc_divisor = 1000
            session.gc_maxlifetime = 1440//过期时间 默认24分钟
            //概率是 session.gc_probability/session.gc_divisor 结果 1/1000,
            //不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。
            session.save_path = //好像不同的系统默认不一样,有一种设置是 "N;/path"
            //这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本

         2. session会判断当前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE键值,
这个值可以从php.ini找到

            session.name = PHPSESSID //默认值PHPSESSID
            

         3. 如果不存在会生成一个session_id,然后把生成的session_id作为COOKIE的值传递到客户端.
相当于执行了下面COOKIE 操作,注意的是,这一步执行了setcookie()操作,COOKIE是在header头中发送的,
这之前是不能有输出的,PHP有另外一个函数 session_regenerate_id() 如果使用这个函数,这之前也是不能有输出的。

                setcookie(session_name(),
                          session_id(),
                          session.cookie_lifetime,//默认0
                          session.cookie_path,//默认'/'当前程序跟目录下都有效
                          session.cookie_domain,//默认为空
                          )

         4. 如果存在那么session_id = $_COOKIE[session_name];
            然后去session.save_path指定的文件夹里去找名字为'SESS_' . session_id()的文件.
            读取文件的内容反序列化,然后放到$_SESSION中
    * 2. 为$_SESSION赋值
      比如新添加一个值$_SESSION['test'] = 'blah'; 那么这个$_SESSION只会维护在内存中,当脚本执行结束的时候,
用把$_SESSION的值写入到session_id指定的文件夹中,然后关闭相关资源.      这个阶段有可能执行更改session_id的操作,
比如销毁一个旧的的session_id,生成一个全新的session_id.一半用在自定义 session操作,角色的转换上,
比如Drupal.Drupal的匿名用户有一个SESSION的,当它登录后需要换用新的session_id

        if (isset($_COOKIE[session_name()])) {
          setcookie(session_name(), '', time() - 42000, '/');//旧session cookie过期
        }
        session_regenerate_id();//这一步会生成新的session_id
       //session_id()返回的是新的值

      3.写入SESSION操作
      在脚本结束的时候会执行SESSION写入操作,把$_SESSION中值写入到session_id命名的文件中,可能已经存在,
可能需要创建新的文件。
    * 4. 销毁SESSION
      SESSION发出去的COOKIE一般属于即时COOKIE,保存在内存中,当浏览器关闭后,才会过期,假如需要人为强制过期,
比如 退出登录,而不是关闭浏览器,那么就需要在代码里销毁SESSION,方法有很多,
          o 1. setcookie(session_name(), session_id(), time() - 8000000, ..);//退出登录前执行
          o 2. usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。
          o 3. session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id

      当不关闭浏览器的情况下,再次刷新,2和3都会有COOKIE传过来,但是找不到数据

2.session.save_handler = user

      用户自定义session处理机制,更加直观
    * session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
1.session_start(),
      执行open($save_path, $session_name)打开session操作句柄
      $save_path 在session.save_handler = files的情况下它就是session.save_path,
但是如果用户自定的话,这个两个参数都用不上,直接返回TRUE

      执行read($id)从中读取数据.//这个参数是自动传递的就是session_id(),可以通过这个值进行操作。
    * 2.脚本执行结束
      执行write($id, $sess_data) //两个参数,很简单
    * 3.假如用户需要session_destroy()
      先执行destroy.在执行第2步

      一个实际例子:

 代码如下 复制代码

      //SESSION初始化的时候调用
      function open($save_path, $session_name)
      {
        global $sess_save_path;
        $sess_save_path = $save_path;
        return(true);
      }

      //关闭的时候调用
      function close()
      {
        return(true);
      }

      function read($id)
      {
        global $sess_save_path;
        $sess_file = "$sess_save_path/sess_$id";
        return (string) @file_get_contents($sess_file);
      }
      //脚本执行结束之前,执行写入操作
      function write($id, $sess_data)
      {
        echo "sdfsf";
        global $sess_save_path;

        $sess_file = "$sess_save_path/sess_$id";
        if ($fp = @fopen($sess_file, "w")) {
          $return = fwrite($fp, $sess_data);
          fclose($fp);
          return $return;
        } else {
          return(false);
        }

      }

      function destroy($id)
      {
        global $sess_save_path;

        $sess_file = "$sess_save_path/sess_$id";
        return(@unlink($sess_file));
      }

      function gc($maxlifetime)
      {
        global $sess_save_path;

        foreach (glob("$sess_save_path/sess_*") as $filename) {
          if (filemtime($filename) + $maxlifetime < time()) {
            @unlink($filename);
          }
        }
        return true;
      }


PHP Session在您把用户信息存储到 PHP session 中之前,首先必须启动会话。

注释:session_start() 函数必须位于 <html> 标签之前:

 代码如下 复制代码

<?

php session_start(); ?>

<html>
<body>

</body>
</html>

上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。
存储 Session 变量
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:

 代码如下 复制代码

<?php
session_start();
// store session data
$_SESSION['views']=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>

</body>
</html>

输出:

Pageviews=1

substr_replace与str_replace有一点像就是直接把字符串替换一部份了,下面小编来给各位同学介绍一下 操作方法。

substr_replace() 函数把字符串的一部分替换为另一个字符串。

用法

substr_replace(string,replacement,start,length)

注意当字符串包含中文时,不经过特殊处理会出现乱码。

 代码如下 复制代码

<?php
$string1="123456789";  
 
echo substr_replace($string1,'###',0);
//###
echo substr_replace($string1,'###',5);
//12345###  
 
echo substr_replace($string1,'###',0,0);
//###123456789
 
echo substr_replace($string1,'###',8,-2);
//12345678###9
 
echo substr_replace($string1,'###',-6,-1);
//123###9
echo "n";
echo substr_replace($string1,'###',-1);
//123###9
echo "n";
echo substr_replace($string1,'###',1,-1);
//1###9
 
echo substr_replace($string1,'###',1,1);
//1###3456789
?>

例2

   

 代码如下 复制代码
<?php
 $var = 'ABCDEFGH:/MNRPQR/';
 echo "Original: $var<hr />n";
 /* These two examples replace all of $var with 'bob'. */
 echo substr_replace($var, 'bob', 0) . "<br />n";
 echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />n";
 /* Insert 'bob' right at the beginning of $var. */
 echo substr_replace($var, 'bob', 0, 0) . "<br />n";
 /* These next two replace 'MNRPQR' in $var with 'bob'. */
 echo substr_replace($var, 'bob', 10, -1) . "<br />n";
 echo substr_replace($var, 'bob', -7, -1) . "<br />n";
 /* Delete 'MNRPQR' from $var. */
 echo substr_replace($var, '', 10, -1) . "<br />n";
?>

Original: ABCDEFGH:/MNRPQR/
bob
bob
bobABCDEFGH:/MNRPQR/
ABCDEFGH:/bob/
ABCDEFGH:/bob/
ABCDEFGH://

将过长的字符串用省略号代替一部分

下面的程序可以将过长的字符串保留首尾,中间用省略号代替。

   

 代码如下 复制代码
<?php
 $longString = 'abcdefghijklmnopqrstuvwxyz0123456789z.jpg';
 $separator = '...';
 $separatorlength = strlen($separator) ;
    // 需要保留的字符串
 $maxlength = 25 - $separatorlength;
    // 从一半的长度开始
 $start = $maxlength / 2 ;
    // 计算偏移量
 $trunc =  strlen($longString) - $maxlength;
 echo substr_replace($longString, $separator, $start, $trunc);
 //prints "abcdefghij...56789z.jpg"
?>

程序运行结果:

abcdefghijk...456789z.jpg

Program List:将多出的字符用省略号代替

 代码如下 复制代码

 
<?php
function truncate($text,$numb)
{
 $text = html_entity_decode($text, ENT_QUOTES);
 if (strlen($text) > $numb)
 {
  $text = substr($text, 0, $numb);
  $text = substr($text,0,strrpos($text," "));
     //This strips the full stop:
     if ((substr($text, -1)) == ".")
  {
         $text = substr($text,0,(strrpos($text,".")));
     }
  $etc = "...";
  $text = $text.$etc;
 }
 $text = htmlentities($text, ENT_QUOTES);
 return $text;
}
//Call function
$text = 'welcome to nowamagic, welcome to nowamagic, welcome to nowamagic';
$result = truncate($text, 35);
echo $result;
?>

好了你大概会知道此函数的作用了。

本文章来给大家转篇关于Yii 查询结果转化成数组方法,如果你对此文章有兴趣不防进入参考一下。


使用Yii 的Active Record 来获取查询结果的时候,返回的结果集是一个对象类型的,有时候为了数据处理的方便希望能够转成数组返回。比如下面的方法:

 代码如下 复制代码


// 查找满足指定条件的结果中的第一行
$post=Post::model()->find($condition,$params);
// 查找具有指定主键值的那一行
$post=Post::model()->findByPk($postID,$condition,$params);
// 查找具有指定属性值的行
$post=Post::model()->findByAttributes($attributes,$condition,$params);


就可以了。

 代码如下 复制代码

Post::model()->find()->attributes


如果返回的是多条结果,返回的是一个对象数组的时候有下面2种方法:

 代码如下 复制代码
//第一种直接将结果循环输出
 foreach ($myReceivedCode as $model) {
                        $result[] = $model->attributes;
                }
 
//第二种用array_map
                $result= array_map(function($record) {
                                return $record->attributes;
                        }, Post::model()->->findAllByAttributes($attributes));
今天小编来给各位同学介绍一个比较综合的PHP和JS判断来路跳转到指定页面,希望此方法对各位同学会有所帮助哦。

PHP根据referer跳转:

 代码如下 复制代码

<?php
$ref = $_SERVER['HTTP_REFERER'];
        if(stripos($ref,"baidu") || stripos($ref,"google")
 {
  header("Location: http://www.111cn.net");
  exit;
 }
?>

根据UA跳转:

 代码如下 复制代码

<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if(stripos($userAgent,"Moz") || stripos($userAgent,"baidu"))
    {
        header("Location: http://www.111cn.net");
    }
?>


header()函数的定义如下:

void header (string string [,bool replace [,int http_response_code]])

可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。

第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。注意:1.location和“:”号间不能有空格,否则不会跳转。

JS判断方法:

 代码如下 复制代码

<script>
 var s=document.referrer;
 if(s.indexOf("baidu")>0||s.indexOf("soso")>0||s.indexOf("google")>0||s.indexOf("yahoo")>0||s.indexOf("sogou")>0||s.indexOf("youdao")>0||s.indexOf("bing")>0)
 {
 self.location="http://www.111cn.net";
 }
</script>

[!--infotagslink--]

相关文章