《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培训 vephp.com),用于去掉字符串两边的标点符号,你可以添加进去自己要去掉的符号:
$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); }
转载请注明本页网址:
http://www.vephp.com/jiaocheng/172.html