日常收集整理php正则表达式(超常用)

以下是关于小编给大家日常收集整理php正则表达式,具体内容请看下文详解吧

$str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span>\2</span>\3', $str);

其中用了三个子模式(每个圆括号中内容为一个子模式),第一个是链接开始标签,第二个是链接文本,第三个是</a>

然后第二个参数中\1、\2、\3就表示这三个部分,要替换成什么样子还不简单?

获取页面中的所有链接地址的PHP函数

下面这个用PHP写的函数,可以获取任意的字符串$string中的所有链接地址($string可以是从一个HTML页面文件直接读取出来的字符串),结果保存在一个数组中返回.该函数自动把电子邮件地址排除在外,而且返回的数组中不会有重复元素.

function GetAllLink($string) { $string = str_replace("\r","",$string); $string = str_replace("\n","",$string); $regex[url] = "((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)"; $regex[email] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)"; //去掉标签之间的文字 $string = eregi_replace(">[^<>]+<","><", $string); //去掉JAVASCRIPT代码 $string = eregi_replace("<!--.*//-->","", $string); //去掉非<a>的HTML标签 $string = eregi_replace("<[^a][^<>]*>","", $string); //去掉EMAIL链接 $string = eregi_replace("<a([ ]+)href=([\"']*)mailto:($regex[email])([\"']*)[^>]*>","", $string); //替换需要的网页链接 $string = eregi_replace("<a([ ]+)href=([\"']*)($regex[url])([\"']*)[^>]*>","\\3\t", $string); $output[0] = strtok($string, "\t"); while(($temp = strtok("\t"))) { if($temp && !in_array($temp, $output)) $output[++$i] = $temp; } return $output; }

以下是以PHP的语法所写的示例

验证字符串是否只含数字与英文,字符串长度并在4~16个字符之间

<?php $str = 'a1234'; if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) { echo "验证成功";} else { echo "验证失敗";}?>

简易的台湾身分证字号验证

<?php $str = 'a1234'; if (preg_match("^(?:\d{15}|\d{18})$", $str)) { echo "验证成功"; } else { echo "验证失敗";} ?>

下面的代码实现文字中的代码块,功能就如你在脚本之家看到的代码一样。

function codedisp($code) { global $discuzcodes; $discuzcodes['pcodecount']++; $code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code))); $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<br><div class=https://www.jb51.net/article/\"msgheader\"><div class=https://www.jb51.net/article/\"right\"><a href=https://www.jb51.net/article/\"###\" class=https://www.jb51.net/article/\"smalltxt\" onclick=https://www.jb51.net/article/\"copycode($('phpcode$discuzcodes[codecount]'));\">[复制此代码]</a></div>代码如下:</div><div class=https://www.jb51.net/article/\"msgborder\" id=https://www.jb51.net/article/\"phpcode$discuzcodes[codecount]\">".fhtml2($code)."</div><br>"; $discuzcodes['codecount']++; return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]"; } $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message); $message = preg_replace("/\s*\[html\](.+?)\[\/html\]\s*/ies", "htmldisp('\\1')", $message);

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]

评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r

评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />

评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\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地址时有用

匹配特定数字:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjpdfj.html