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 discuz 主题表和回帖表的设计
Mar 13 PHP
php 中文和编码判断代码
May 16 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
php输出xml必须header的解决方法
Oct 17 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
Nginx下ThinkPHP5的配置方法详解
Aug 01 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
php变量与字符串的增删改查操作示例
May 07 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语法(2)
2006/10/09 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHP中的类型约束介绍
2015/05/11 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
php while循环控制的简单实例
2016/05/30 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
公司拓展活动方案
2014/02/13 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
酒店管理求职信范文
2014/04/06 职场文书
岗位说明书范文
2014/05/07 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技