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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
php 分页函数multi() discuz
Jun 21 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
PHP命名空间与自动加载类详解
Sep 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Python中修改字符串的四种方法
2018/11/02 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
暂住证证明
2015/06/19 职场文书
五一放假通知怎么写
2015/08/18 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL