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 分页类代码
Nov 13 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
理解php依赖注入和控制反转
May 11 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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环境――Appserv
2006/12/13 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
简洁的十分钟Python入门教程
2015/04/03 Python
python实现矩阵乘法的方法
2015/06/28 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
python ChainMap的使用和说明详解
2019/06/11 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
美发活动策划书
2014/01/14 职场文书
给校长的建议书500字
2014/05/15 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
工作简报格式范文
2015/07/21 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python
SQLServer权限之只开启创建表权限
2022/04/12 SQL Server
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技