加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php过滤英文和中文标点符号代码

发布时间:2020-05-29 03:22:01 所属栏目:PHP 来源:互联网
导读:介绍《php过滤英文和中文标点符号代码》开发教程,希望对您有用。

《php过滤英文和中文标点符号代码》要点:
本文介绍了php过滤英文和中文标点符号代码,希望对您有用。如果有疑问,可以联系我们。

php 过滤英文标点符号 过滤中文标点符号,网上有这个函数:

function filterMark($text){
       if(trim($text)=='')return '';
       $text=urlencode($text);
       $text=preg_replace("/(?:%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99|%EF%BD%9E|%EF%BC%8E|%EF%BC%88)+/",' ',$text);
       $text=urldecode($text);
       return trim($text);
}

这个函数做过滤很不错,做数据采集或者数据验证过程中,经常需要做一些特殊的数据处理,如去除中英文标点符号,

原理是先转成URL编码,统一清理。

$keyword="好‘。,好学习PHP!!!";
$keyword=urlencode($keyword);//将关键字编码
$keyword=preg_replace("/(?:%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99)+/",'',$keyword);
$keyword=urldecode($keyword);//将过滤后的关键字解码
echo $keyword;


这个正则是会替换内容中所有标点符号,如果你只想去掉前面,则在正则/后加^符号,

/^(?:%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99|%EF%BD%9E|%EF%BC%8E|%EF%BC%88)+/

同样,如果只想过滤后面的符号,则在后面/前加$符号。


但是正则方法效率偏低,下面是脚本之家PHP的函数(PHP培训 jb51.cc),用于去掉字符串两边的标点符号,你可以添加进去自己要去掉的符号:

$reCon='!+(*+)-这是一个中文内容,使用PHP去除前后的标点符号。+【()】';
echo  trim($reCon,'。,()—、【】:!');
echo "n";
echo  clearChar($reCon);


function clearChar($str, $back=false)
{
       $newStr = '';
       $limitChar = ['。',  ',',  '(',  ')',  '—',  '、',  '【',  '】',  ':',  '!', ' 1', '2', '3', '4', '5', '6', '7', '8', '9', ',', '.', ':',  '!',  '<',   '>',   '/',   '',  '?',   '*',  '^',   '%',  '-',   '_',  '+' ];
       $reConLen = mb_strlen ($str);
       $start = !$back ? 0:  $reConLen-1;
       for($i=$start;(!$back? ($i<$reConLen) : ($i>=0)); (!$back ? $i++ : $i--))
       {
              $char = mb_substr ($str, $i,1, CHARSET);
              if(!in_array ($char,  $limitChar)){
                     $newStr = !$back ? mb_substr ($str, $i) : mb_substr ($str, 0,$i+1);
                     break;
              }
       }

       return !$back ?  clearChar($newStr, true) : trim ($newStr);
}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读