php使用正则表达式获取字符串中的URL


Posted in PHP onDecember 29, 2016

今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下:

$str ='本文实例讲述了php匹配字符串里所有URL地址的方法。http://www.manongjc.com 分享给大家供大家参考'; 
 preg_match_all("/http:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/",$str,$array2); 
print_r($array2);

运行结果为:

( 
  [0] => Array 
    ( 
      [0] => http://www.manongjc.com 
    ) 
)

这里主要使用到preg_match_all函数,该函数具体使用方法如下:

preg_match_all — 进行全局正则表达式匹配

语法:

int preg_match_all ( string pattern, string subject, array matches [, int flags] )

在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。
搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。

特别注意PREG_PATTERN_ORDER 和PREG_SET_ORDER

flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义):

如果使用PREG_PATTERN_ORDER

对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。(即$matches[0] [0]为全部模式匹配中的每一项,$matches[0] [1]为全部模式匹配中的第二项,$matches[1] [0]为匹配每一个括号中的第一项,$matches[1] [0]为匹配每一个括号中的第二项)

<?php 
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER);
/* http://www.manongjc.com/article/1591.html */
print $out[0][0].", ".$out[0][1]."\n"; 
print $out[1][0].", ".$out[1][1]."\n"; 
?>

输出结果:

<b>example: </b>, <div align=left>this is a test</div> 
example: , this is a test
PHP 相关文章推荐
php中数据的批量导入(csv文件)
Oct 09 PHP
简单易用的计数器(数据库)
Oct 09 PHP
oracle资料库函式库
Oct 09 PHP
用PHP实现 上一篇、下一篇的代码
Sep 29 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
php强制用户转向www域名的方法
Jun 19 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
php实现递归的三种基本方式
Jul 04 PHP
PHP实现递归无限级分类
Oct 22 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
php通过文件头判断格式的方法
May 28 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
php实现水印文字和缩略图的方法示例
Dec 29 #PHP
PHPMailer发送邮件
Dec 28 #PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 #PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 #PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 #PHP
PHP MYSQL简易交互式站点开发
Dec 27 #PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 #PHP
You might like
乐信RP2100的电路分析和打磨
2021/03/02 无线电
关于php fread()使用技巧
2010/01/22 PHP
php开启openssl的方法
2014/05/15 PHP
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
Python中的descriptor描述器简明使用指南
2016/06/02 Python
python 统计代码行数简单实例
2017/05/04 Python
python中的字典操作及字典函数
2018/01/03 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Django实现表单验证
2018/09/08 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
python 重命名轴索引的方法
2018/11/10 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
python框架django项目部署相关知识详解
2019/11/04 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
python3爬取torrent种子链接实例
2020/01/16 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
乌鸦喝水教学反思
2014/02/07 职场文书
士力架广告词
2014/03/20 职场文书
平安家庭事迹材料
2014/12/20 职场文书
英语辞职信范文
2015/02/28 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
工厂无线对讲系统解决方案
2022/02/18 无线电