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动态生成虚拟现实VRML网页
Oct 09 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
laravel 解决crontab不执行的问题
Oct 22 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
js验证表单第二部分
2006/11/25 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
简单谈谈python中的语句和语法
2017/08/10 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
什么是数据抽象
2016/11/26 面试题
计算机专业推荐信范文
2013/11/27 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android