php常用正则表达式规则

 更新时间:2016年11月25日 15:50  点击:1250
文章详细的介绍了大家开发中学用到的正则表达式,有需要的朋友可以参考学习一下,这些正则包括大部份常用的验证规则哦。

匹配中文字符的正则表达式: [u4e00-u9fa5]  
  评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
  匹配双字节字符(包括汉字在内):[^x00-xff]
  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
  匹配空白行的正则表达式:ns*r
  评注:可以用来删除空白行
  匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />
  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
  匹配首尾空白字符的正则表达式:^s*|s*$
  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
  匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
  评注:表单验证时很实用
  匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
  评注:网上流传的版本功能很有限,上面这个基本可以满足需求
  匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  评注:表单验证时很实用
  匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
  评注:匹配形式如 0511-4405222 或 021-87888822
  匹配腾讯QQ号:[1-9][0-9]{4,}
  评注:腾讯QQ号从10000开始
  匹配中国邮政编码:[1-9]d{5}(?!d)
  评注:中国邮政编码为6位数字
  匹配身份证:d{15}|d{18}
  评注:中国的身份证为15位或18位
  匹配ip地址:d+.d+.d+.d+
  评注:提取ip地址时有用
  匹配特定数字:
  ^[1-9]d*$    //匹配正整数
  ^-[1-9]d*$   //匹配负整数
  ^-?[1-9]d*$   //匹配整数
  ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
  ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
  ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
  ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
  ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
  ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
  ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
  评注:处理大量数据时有用,具体应用时注意修正
  匹配特定字符串:
  ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
  ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
  ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
  ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
  ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
  在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
  只能输入数字:“^[0-9]*$”
  只能输入n位的数字:“^d{n}$”
  只能输入至少n位数字:“^d{n,}$”
  只能输入m-n位的数字:“^d{m,n}$”
  只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
  只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
  只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
  只能输入非零的正整数:“^+?[1-9][0-9]*$”
  只能输入非零的负整数:“^-[1-9][0-9]*$”
  只能输入长度为3的字符:“^.{3}$”
  只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
  只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
  只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
  只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
  只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
  验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
  只能包含字符、数字和下划线。
  验证是否含有^%&”,;=?$”等字符:“[^%&'',;=?$x22]+”
  只能输入汉字:“^[u4e00-u9fa5],{0,}$”
  验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
  验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
  验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
  正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
  “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
  验证身份证号(15位或18位数字):“^d{15}|d{}18$”
  验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
  验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
  正确格式为:“01”“09”和“1”“31”。
  匹配中文字符的正则表达式: [u4e00-u9fa5]
  匹配双字节字符(包括汉字在内):[^x00-xff]
  匹配空行的正则表达式:n[s| ]*r
  匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/
  匹配首尾空格的正则表达式:(^s*)|(s*$)
  匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
  匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
  (1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
  String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}
  (2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现
 

 代码如下 复制代码
 String.prototype.trim = function()
  {
  return this.replace(/(^s*)|(s*$)/g, “”);
  }

  (3)应用:利用正则表达式分解和转换IP地址
  

 代码如下 复制代码
function IP2V(ip) //IP地址转换成对应数值
  {
  re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式
  if(re.test(ip))
  {
  return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
  }
  else
  {
  throw new Error(“Not a valid IP address!”)
  }
  }


  (4)应用:从URL地址中提取文件名的javascript程序
  s=”http://www.9499.net/page1.htm”;
  s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ;//Page1.htm
  (5)应用:利用正则表达式限制网页表单里的文本框输入内容
  用正则表达式限制只能输入中文:onkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^u4E00-u9FA5]/g,”))”
  用正则表达式限制只能输入全角字符: onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^uFF00-uFFFF]/g,”))”
  用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste= “clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^d]/g,”))”
  用正则表达式限制只能输入数字和英文:onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^d]/g,”

下面这个文件操作类可以建立目录,删除目录,删除文件等一系列你能操作操作的功能,它都可以实现有需要的朋友可以参考一下
 代码如下 复制代码

<?
/**
* 操纵文件类
*
* 例子:
* FileUtil::createDir('a/1/2/3');                    测试建立文件夹 建一个a/1/2/3文件夹
* FileUtil::createFile('b/1/2/3');                    测试建立文件        在b/1/2/文件夹下面建一个3文件
* FileUtil::createFile('b/1/2/3.exe');             测试建立文件        在b/1/2/文件夹下面建一个3.exe文件
* FileUtil::copyDir('b','d/e');                    测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去
* FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件        建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去
* FileUtil::moveDir('a/','b/c');                    测试移动文件夹 建立一个b/c文件夹,并把a文件夹下的内容移动进去,并删除a文件夹
* FileUtil::moveFile('b/1/2/3.exe','b/d/3.exe'); 测试移动文件        建立一个b/d文件夹,并把b/1/2中的3.exe移动进去                  
* FileUtil::unlinkFile('b/d/3.exe');             测试删除文件        删除b/d/3.exe文件
* FileUtil::unlinkDir('d');                      测试删除文件夹 删除d文件夹
*/
class FileUtil {
/**
    * 建立文件夹
    *
    * @param string $aimUrl
    * @return viod
    */
function createDir($aimUrl) {
       $aimUrl = str_replace('', '/', $aimUrl);
       $aimDir = '';
       $arr = explode('/', $aimUrl);
       foreach ($arr as $str) {
         $aimDir .= $str . '/';
         if (!file_exists($aimDir)) {
            mkdir($aimDir);
         }
       }
}
/**
    * 建立文件
    *
    * @param string $aimUrl
    * @param boolean $overWrite 该参数控制是否覆盖原文件
    * @return boolean
    */
function createFile($aimUrl, $overWrite = false) {
       if (file_exists($aimUrl) && $overWrite == false) {
         return false;
       } elseif (file_exists($aimUrl) && $overWrite == true) {
         FileUtil::unlinkFile($aimUrl);
       }
       $aimDir = dirname($aimUrl);
       FileUtil::createDir($aimDir);
       touch($aimUrl);
       return true;
}
/**
    * 移动文件夹
    *
    * @param string $oldDir
    * @param string $aimDir
    * @param boolean $overWrite 该参数控制是否覆盖原文件
    * @return boolean
    */
function moveDir($oldDir, $aimDir, $overWrite = false) {
       $aimDir = str_replace('', '/', $aimDir);
       $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';
       $oldDir = str_replace('', '/', $oldDir);
       $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/';
       if (!is_dir($oldDir)) {
         return false;
       }
       if (!file_exists($aimDir)) {
         FileUtil::createDir($aimDir);
       }
       @$dirHandle = opendir($oldDir);
       if (!$dirHandle) {
         return false;
       }
       while(false !== ($file = readdir($dirHandle))) {
         if ($file == '.' || $file == '..') {
            continue;
         }
         if (!is_dir($oldDir.$file)) {
            FileUtil::moveFile($oldDir . $file, $aimDir . $file, $overWrite);
         } else {
            FileUtil::moveDir($oldDir . $file, $aimDir . $file, $overWrite);
         }
       }
       closedir($dirHandle);
       return rmdir($oldDir);
}
/**
    * 移动文件
    *
    * @param string $fileUrl
    * @param string $aimUrl
    * @param boolean $overWrite 该参数控制是否覆盖原文件
    * @return boolean
    */
function moveFile($fileUrl, $aimUrl, $overWrite = false) {
       if (!file_exists($fileUrl)) {
         return false;
       }
       if (file_exists($aimUrl) && $overWrite = false) {
         return false;
       } elseif (file_exists($aimUrl) && $overWrite = true) {
         FileUtil::unlinkFile($aimUrl);
       }
       $aimDir = dirname($aimUrl);
       FileUtil::createDir($aimDir);
       rename($fileUrl, $aimUrl);
       return true;
}
/**
    * 删除文件夹
    *
    * @param string $aimDir
    * @return boolean
    */
function unlinkDir($aimDir) {
       $aimDir = str_replace('', '/', $aimDir);
       $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
       if (!is_dir($aimDir)) {
         return false;
       }
       $dirHandle = opendir($aimDir);
       while(false !== ($file = readdir($dirHandle))) {
         if ($file == '.' || $file == '..') {
            continue;
         }
         if (!is_dir($aimDir.$file)) {
            FileUtil::unlinkFile($aimDir . $file);
         } else {
            FileUtil::unlinkDir($aimDir . $file);
         }
       }
       closedir($dirHandle);
       return rmdir($aimDir);
}
/**
    * 删除文件
    *
    * @param string $aimUrl
    * @return boolean
    */
function unlinkFile($aimUrl) {
       if (file_exists($aimUrl)) {
         unlink($aimUrl);
         return true;
       } else {
         return false;
       }
}
/**
    * 复制文件夹
    *
    * @param string $oldDir
    * @param string $aimDir
    * @param boolean $overWrite 该参数控制是否覆盖原文件
    * @return boolean
    */
function copyDir($oldDir, $aimDir, $overWrite = false) {
       $aimDir = str_replace('', '/', $aimDir);
       $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
       $oldDir = str_replace('', '/', $oldDir);
       $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/';
       if (!is_dir($oldDir)) {
         return false;
       }
       if (!file_exists($aimDir)) {
         FileUtil::createDir($aimDir);
       }
       $dirHandle = opendir($oldDir);
       while(false !== ($file = readdir($dirHandle))) {
         if ($file == '.' || $file == '..') {
            continue;
         }
         if (!is_dir($oldDir . $file)) {
            FileUtil::copyFile($oldDir . $file, $aimDir . $file, $overWrite);
         } else {
            FileUtil::copyDir($oldDir . $file, $aimDir . $file, $overWrite);
         }
       }
       return closedir($dirHandle);
}
/**
    * 复制文件
    *
    * @param string $fileUrl
    * @param string $aimUrl
    * @param boolean $overWrite 该参数控制是否覆盖原文件
    * @return boolean
    */
function copyFile($fileUrl, $aimUrl, $overWrite = false) {
       if (!file_exists($fileUrl)) {
         return false;
       }
       if (file_exists($aimUrl) && $overWrite == false) {
         return false;
       } elseif (file_exists($aimUrl) && $overWrite == true) {
         FileUtil::unlinkFile($aimUrl);
       }
       $aimDir = dirname($aimUrl);
       FileUtil::createDir($aimDir);
       copy($fileUrl, $aimUrl);
       return true;
}
}
?>
因为php是外国开发的,在中英文混合体时截取会经常出现乱码,今天我们要讲了就是来解决这一问的哦,有需要的朋友可以参考一下。
 代码如下 复制代码

function smssubstr($string, $length) {
 if(strlen($string) <= $length) {
  return $string; 
 }
 $strcut = '';
 for($i = 0; $i < $length; $i++) {
  $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
 }
 return $strcut;
}

for($i=1; $i<=$smsnum; $i++){
 ${'smscontent'.$i} = smssubstr($message,$smsper);
 $message = str_replace(${'smscontent'.$i},"",$message);
}

php 删除文件与目录代码是对文件与目录管理时会常用到了, 其实我们是删除文件后再删除目录的,因为php不能直接删除不是null的文件夹.
 代码如下 复制代码

function RmDirFiles($indir)
 {
    $dh = dir($indir);
    while($filename = $dh->read()) {
      if($filename == "." || $filename == "..")
       continue;
      else if(is_file("$indir/$filename"))
       @unlink("$indir/$filename");
      else
        $this->RmDirFiles("$indir/$filename");
    }
    $dh->close();
    @rmdir($indir);
 }


 //获得某目录合符规则的文件
 

 代码如下 复制代码
function GetMatchFiles($indir,$fileexp,&$filearr)
 {
    $dh = dir($indir);
    while($filename = $dh->read())
    {
      $truefile = $indir.'/'.$filename;
      if($filename == "." || $filename == ".."){
       continue;
      }
      else if(is_dir($truefile)){
       $this->GetMatchFiles($truefile,$fileexp,$filearr);
      }
      else if(preg_match("/.(".$fileexp.")/i",$filename)){
       $filearr[] = $truefile;
      }
    }
    $dh->close();
 }


 //删除文件

 代码如下 复制代码
 function DeleteFile($filename)
 {
  $filename = $this->baseDir.$this->activeDir."/$filename";
  if(is_file($filename)){ @unlink($filename); $t="文件"; }
  else{
   $t = "目录";
   if($this->allowDeleteDir==1) $this->RmDirFiles($filename);
  }
  ShowMsg("成功删除一个".$t."!","file_manage_main.php?activepath=".$this->activeDir);
  return 0;
 }

 

这里利用数组来做实例哦,有需要的要改成数据库查询然后再存到数据操作,有需要参考一下。
 代码如下 复制代码

<?php

$a = array(
  'AAAAAA'  =>  array(
        'aaaaaa' => array(
                 '111111',
                 '222222',
                 '333333'
        ),
        'bbbbbb'  => array(
                  '111111',
                 '222222',
                 '333333'
        ),
        'cccccc'  => array(
                  '111111',
                  '222222',
                  '333333'
        ),                     
  ),
  'BBBBBB'  =>   array(
        'aaaaaa' => array(
                  '111111',
                  '222222',
                  '333333'
        ),
        'bbbbbb'=> array(
                  '111111',
                  '222222',
                  '333333'
        ),
        'cccccc'=> array(
                  '111111',
                  '222222',
                  '333333'
        ),
  ),
  'CCCCCC'  => array(
        'aaaaaa'=> array(
                  '111111',
                  '222222',
                  '333333'
        ),
        'bbbbbb'=> array(
                  '111111',
                  '222222',
                  '333333'
        ),
        'cccccc'         => array(
                  '111111',
                  '222222',
                  '333333'
        ),
  ),
);

foreach ($a as $k=>$v){
   echo $k."<br>";
  // if(is_array($v)){
       foreach($v as $key=>$val){
          echo "  ".$key."<br>";
  //     }                           
       if(is_array($val)){
          foreach($val as $kkk=>$vall){
             echo "    ".$vall."<br>";
          }
       }
   }
   echo "<br>";
   }
  
  
    /*******mysql查询无限级分类的代码******/
    /***
   $sql = "SELECT a.Title AS big, b.Title AS small
            FROM largeTitle AS a LEFT JOIN smallTitle  AS b ON  a.ID=b.LargeID";
           
    $a = array();
   
    $r = mysql_query($sql);
   
    while( $arr = mysql_fetch_array($r)){
        $a[$arr['big']] = $arr['small'];
    }
    ***/
?>           

[!--infotagslink--]

相关文章

  • PHP正则表达式取双引号内的内容

    取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • php 验证只能输入汉字、英语、数字的正则表达式

    正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • PHP正则表达式匹配验证提取网址URL实例总结

    网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
  • 正则表达式中两个反斜杠的匹配规则详解

    这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • JS中使用正则表达式g模式和非g模式的区别

    这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
  • JavaScript利用正则表达式替换字符串中的内容

    本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
  • C#正则表达式使用方法示例

    这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
  • 常用C#正则表达式汇总介绍

    c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
  • 一文秒懂python正则表达式常用函数

    这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • Idea使用正则表达式批量替换字符串的方法

    这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
  • js正则学习小记之匹配字符串字面量

    关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配,因为我想学完之后写个语法高亮练手,所以用js代码当作例子...2021-05-07
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • C# 中使用正则表达式匹配字符的含义

    正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
  • Python验证的50个常见正则表达式

    这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
  • C#编程自学之运算符和表达式

    这篇文章主要介绍了C#运算符和表达式,这是自学C#编程的第五篇,希望对大家的学习有所帮助。...2020-06-25
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06