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+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
PHP中的一些常用函数收集
May 26 PHP
php处理json格式数据经典案例总结
May 19 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
php+ajax实现文件切割上传功能示例
Mar 03 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 空格,换行,跳格使用说明
2009/12/18 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
javascript操作cookie
2017/01/17 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
jupyter 导入csv文件方式
2020/04/21 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
园林设计师自荐信
2013/11/18 职场文书
英语课外活动总结
2014/08/27 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
委托函范文
2015/01/29 职场文书
会计稽核岗位职责
2015/04/13 职场文书
Oracle中DBLink的详细介绍
2022/04/29 Oracle