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 escape URL编码
Dec 10 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
php中的strpos使用示例
Feb 27 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
Windows7下的php环境配置教程
Feb 28 PHP
PHP 错误处理机制
Jul 06 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
php实现微信支付之企业付款
May 30 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
destoon复制新模块的方法
2014/06/21 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP概率计算函数汇总
2015/09/13 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
PHP实现百度人脸识别
2019/05/06 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
解密Python中的描述符(descriptor)
2015/06/03 Python
python实现决策树
2017/12/21 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python绘制股票移动均线的实例
2019/08/24 Python
python+pygame实现坦克大战
2019/09/10 Python
pycharm安装及如何导入numpy
2020/04/03 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
如何利用Python写个坦克大战
2020/11/18 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
关于毕业的广播稿
2014/01/10 职场文书
倡议书格式
2014/04/14 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
教学督导岗位职责
2015/04/10 职场文书
消防宣传标语大全
2015/08/03 职场文书
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis