常用正则表达式 php

//删除一对中括号内的内容:
$str = 'abc[url]123[/url]xyz';
$pattern = '/\[url\S*\[\/url\S*\]/';
$str = preg_replace($pattern, '', $str);
echo $str . ''; //输出:abcxyz
 
//PHP匹配多对中括号中的内容:
$str = '这是[3]def[25]我的[26]';
$pattern = '/\[([a-z0-9]+)\]/';
preg_match($pattern, $str, $match);
print_r($match);
 
//匹配所有大括号里面的内容:
$str = 'abc{title}def{author}mn';
$pattern = '/{(.*)}/U';
preg_match($pattern, $str, $match);
print_r($match);
 
//匹配网页源代码中的图片路径:
$str = '<img alt="标题" id="pic" src="http://test.cn/avatar.jpg" />';
$pattern = '/<img.*?src="(.*?)".*?\/?>/i';
preg_match($pattern,$str,$match);
print_r($match);
 
//匹配当前页面的所有超链接:
$str = '<a href="http://www.test.com/a.html">跳转</a>';
$pattern = '/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i';
preg_match($pattern, $str, $match);
print_r($match);
 
//匹配邮件
$str = '12345@qq.com';
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";
preg_match($pattern, $str, $match);
print_r($match);
 
//匹配11位手机号:
$str = '13299803211';
$pattern = "/^1(3|5|8)\d{9}$/";
preg_match($pattern, $str, $match);
print_r($match);
 
//匹配139开头的11位手机号码
$str = '13912345678';
$pattern = '/^139\d{8}$/';
preg_match($pattern,$str,$match);
print_r($match);
 
//UTF-8编码下提取字符串中的中文:
$str = 'hello 中文 byebye';
$pattern = '/[\x{4e00}-\x{9fa5}]+/u';
preg_match($pattern, $str, $match);
print_r($match); //“中文”
 
//替换字符串中的中文为空
$res = preg_replace($pattern,'',$str);
echo $res;
 
//分割中文字符串为等长度元素的数组(英文可以用str_split,但中文会乱码)
$str = '中文字符串';
$res = preg_split('/(?<!^)(?!$)/u', $str);
print_r($res);
 
//过滤网页上的所有script标记
$str = '<script type="text/javascript" src="dd.js">alert(123);</script><p style="color: red">测试php正则匹配掉js代码</p>';
$pattern = "/<script[\s\S]*?<\/script>/i"; //过滤JS标签
$pattern = "/<[\/\!]*?[^<>]*?>/si"; //过滤HTML标签
$res = preg_replace($pattern, "", $str);
echo $res;
 
//替换<b>标签为空
$str = '<b>abc</b><b>abc</b>';
$pattern = '/<b>(.*?)<\/b>/';
$res = preg_replace($pattern,'\\1',$str);
echo $res;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值