最常用的PHP正则表达式收集整理


本文整理自网络,侵删。

PHP代码
$str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span class="link">\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 "验证失敗";} 
?> 

阅读剩余部分

相关阅读 >>

给ecshop添加最新评论

phpcms v9 整合discuz! x2.5 和ucenter 1.6.0详细图文教程

巧用discuz!7.0后台防灌水功能

destoon数据库表说明汇总

discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口

使用discuz关键词服务器实现php中文分词

discuz批量修改论坛版块权限和用户组权限的方法

linux+nginx+mysql下配置论坛程序discuz的基本教程

ubb的跨站脚本攻击的漏洞

discuz怎么设置屏蔽论坛用户发布的站外链接

更多相关阅读请进入《Discuz论坛》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...