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
apache+php完美解决301重定向的两种方法
Jun 08 PHP
关于crontab的使用详解
Jun 24 PHP
thinkphp实现数组分页示例
Apr 13 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 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/03 咖啡文化
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
CURL状态码列表(详细)
2013/06/27 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
使用python实现链表操作
2018/01/26 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
物流经理自我评价
2013/09/23 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
报到证办理个人委托书
2014/10/06 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers