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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
php中自定义函数dump查看数组信息类似var_dump
Jan 27 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
PHP filesize函数用法浅析
Feb 15 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
May 05 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/12/22 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
python enumerate函数的使用方法总结
2017/11/15 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
Python中的Numpy矩阵操作
2018/08/12 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
销售行业个人求职自荐信
2013/09/25 职场文书
建筑管理专业求职信
2014/07/28 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js