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部分常见问题总结
Oct 09 PHP
搜索引擎技术核心揭密
Oct 09 PHP
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
[原创]php求圆周率的简单实现方法
May 30 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
PHP通过文件保存和更新信息的方法分析
Sep 12 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
劣质的PHP代码简化
2010/02/08 PHP
PHP操作xml代码
2010/06/17 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
js自定义回调函数
2015/12/13 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python实现最大优先队列
2019/08/29 Python
python生成大写32位uuid代码
2020/03/03 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
优秀员工个人的自我评价
2013/11/29 职场文书
大学生最常用的自我评价
2013/12/07 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
慈善晚会策划方案
2014/05/14 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
2014年学校工作总结
2014/11/20 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
班级班风口号大全
2015/12/25 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫