卧龙的朋友叫卧槽

少不争气做程序,两载矣,未见琼楼玉宇。几兆不值三两文,轻声语,莫惊道上高人。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP正则表达式

Posted on 2011-03-27 19:03  卧龙的朋友叫卧槽  阅读(201)  评论(0)    收藏  举报
 

函数声明:
 mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
 
 从subject中搜索符合pattern的内容用replacement进行替换,limit为替换次数,-1为全部替换。
 replacement可以用\n或者$n的方式引用pattern中以()形式表示的字符,0<n<=99,顺序从左到右。
 pattern、replacement、subject可以为数组类型。

 a|b 匹配x或y
 [ab.-] 匹配所包含的任意一个字符
 [^ab.-] 匹配未包含的任意字符
 [a-z] 匹配指定范围内的任意字符
 [^a-z] 匹配任何不在指定范围内的任意字符
 \d 匹配一个数字字符。等价于 [0-9]。 
 \D 匹配一个非数字字符。等价于 [^0-9]。 
 \f 匹配一个换页符。等价于 \x0c 和 \cL。
 \n 匹配一个换行符。等价于 \x0a 和 \cJ。
 \r 匹配一个回车符。等价于 \x0d 和 \cM。
 \s 匹配任何空白字符,包括空格、制表符、换页符等
 \S 匹配任何非空白字符
 \t 匹配一个制表符
 \v 匹配一个垂直制表符
 \w 匹配包括下划线的任何单词字符
 \W 匹配任何非单词字符

例子:

 将字符中的"和‘替换为空
 $return=preg_replace("/[\"']/i","","my'home \"home\"");
 echo $return;
 output:myhome home
 
 将邮件地址的@替换为#
 $return=preg_replace("/([0-9]+|\s*)@([0-9]+\s*).(\s*)/i","#.","my@163.com");
 echo $return;
 output:my#163.com
 
 URL重写经常用到的表达式
 $return=preg_replace("/news.php\?action\=view&id\=([0-9]+)/i","news-av-.html","news.php?action=view&id=1");
 echo $return;
 output:news-av-1.html

去除文本中的超链接、邮件地址等信息
 $searcharray=array("/http:\/\/[a-z0-9\/\-_+=.~!%@?#%&;:$\()|]+\.(jpg|gif|png|bmp)/i",    
        "/((https?|ftp|gopher|news|telnet|rtsp|mms|callto):\/\/|www\.)([a-z0-9\/\-_+=.~!%@?#%&;:$\()|]+)/i",
        "/([_a-z0-9-+]+(\.[_a-z0-9-+]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4}))/i"
     );
 $replacearray=array(
      "",      
      "",
      ""
     );
 $return=preg_replace($searcharray,$replacearray,'http://www.google.com www@google.com no hyper link.');
 echo $return;
 output:no hyper link.

 

以上为网络搜集.

学有所长,我也刚学了,也做个,非法邮件地址替换规则: preg_replace("/[^0-9\w@.]/i","",$mailto);便替换为了邮件所支持的a-z,0-9,. ,@,_ 等符号。