php用正则表达式匹配URL的简单方法
在PHP的官网上看到的parse_url()函数的替代方案。结果和parse_url()函数差不多,是使用正则实现的。URI 是 Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位。 对象分组:
代码如下:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12 3 4
<?php
$search = '~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~i';
$url = 'http://www.jb51.net/pub/ietf/uri/#Gonn';
$url = trim($url);
preg_match_all($search, $url ,$rr);
printf("<p>输出URL数据为:</p><pre>%s</pre>\n",var_export( $rr ,TRUE));
/*
各分组如下
$1 = http:
$2 = http
$3 = //www.nowamagic.net
$4 = www.nowamagic.net
$5 = /pub/ietf/uri/
$6 = <undefined>
$7 = <undefined>
$8 = #Gonn
$9 = Gonn
*/
?>
上面的正则表达式可以获取URL中的任何一部分,下面的代码则简单一些:
代码如下:
<?php
// 从 URL 中取得主机名
preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.jb51.net/index.html", $matches);
$host = $matches[2];
// 从主机名中取得后面两段
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo "domain name is: {$matches[0]}\n";
?>
相关推荐
-
正则匹配密码只能是数字和字母组合字符串功能【php与js实现】
本文实例讲述了正则匹配密码只能是数字和字母组合字符串功能.分享给大家供大家参考,具体如下: 密码要求: 1. 不能全部是数字 2. 不能全部是字母 3. 必须是数字和字母组合 4. 不包含特殊字符 5. 密码长度6-30位的字符串 /** * @desc get_pwd_strength()im:根据密码字符串判断密码结构 * @param (string)$mobile * return 返回:$msg */ function get_pwd_strength($pwd){ if (strle
-
PHP正则匹配图片并给图片加链接详解
正则: 复制代码 代码如下: $newstext=preg_replace(preg_replace('/(<img[^>]+src\s*=\s*"?([^>"\s]+)"?[^>]*>)/im', '<a href="$2″>$1</a>', $newstext); 解说: 1.preg_replace和str_replace的区别: str_replace只是纯字符替换,而preg_replace才是正则替换
-
正确的PHP匹配UTF-8中文的正则表达式
我以前一直用这个 复制代码 代码如下: preg_match('~[\x7f-\xff]+~is', $string, $tmp); 今天才发现,上面这个也会匹配到一些欧洲国家的字符 应该用下面这个,注意修正符 u 复制代码 代码如下: preg_match('~[\x{4e00}-\x{9fa5}]+~u', $string, $tmp);
-
php与javascript正则匹配中文的方法分析
本文实例讲述了php与javascript正则匹配中文的方法.分享给大家供大家参考,具体如下: php中正则匹配utf-8中文: (重点是:[\x{4e00}-\x{9fa5}]+) $str = "我们"; if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str,$arr)) { print("该字符串全部是中文"); echo '<pre>'; print_r($arr); } else {
-
PHP正则匹配中英文、数字及下划线的方法【用户名验证】 原创
本文实例讲述了PHP正则匹配中英文.数字及下划线的方法.分享给大家供大家参考,具体如下: 一.问题: 对于用户注册时的用户名要求由中英文.数字或下划线组成,不得含有其他字符. 二.解决方法: 针对输入字符进行中英文.数字及下划线的正则验证即可. 代码如下: $username='我们jb51.net@#--^&*'; $preg='/[\w\x{4e00}-\x{9fa5}]+/u'; //$preg='/[\x80-\xff_\w]+/u'; preg_match($preg,$usernam
-
php匹配网址的正则 几乎可以匹配任何网址
比较简单的 $str = ''; $isMatched = preg_match('/^^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+$/', $str, $matches); var_dump($isMatched, $matches); 几乎可以匹配任何网址: ^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*[\..])+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int
-
php正则匹配文章中的远程图片地址并下载图片至本地
使用php的正则表达式来实现: $content = '这里是文章内容,这里插入一张图片测试 <img src="XXXXXXXXXXXXXXXXXXXX">'; $content = stripslashes ( $content ); $img_array = array (); // 匹配所有远程图片 preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png
-
php用正则表达式匹配中文实例详解
在php中汉字正则可能有些朋友觉得很简单,但是在使用时会发现在gbk编码与uft8编码可能会有点区别哦,下面小编来介绍一下.gbk编码下汉字正则 1.判断字符串是否全是汉字 复制代码 代码如下: <?php $str = '全部是汉字测试'; if (preg_match_all("/^([x81-xfe][x40-xfe])+$/", $str, $match)) { echo '全部是汉字'; } else { echo '不
-
php正则表达式中的非贪婪模式匹配
一般情况下,正则表达式的匹配是贪婪模式的,比如下面这个例子: 字符串:....src="http://www.bloghome.cn/1.mp3" type="application/x-mplayer2" .... 要求的结果:http://www.bloghome.cn/1.mp3 如果匹配表达式写为:/src="(.*)"/,则得不到正确的结果,因为最后一个双引号的匹配是贪婪模式的. 解决办法:匹配表达式写为: /src="(.*
-
php正则表达匹配中文问题分析小结
复制代码 代码如下: $str = '中华人民共和国123456789abcdefg'; echo preg_match("/^[u4e00-u9fa5_a-zA-Z0-9]{3,15}$",$strName); 运行一下上面这段代码,看会有什么提示信息? Warning: preg_match(): Compilation failed: PCRE does not support L, l, N, P, p, U, u, or X at offset 3 in F:wwwrootp
-
PHP匹配连续的数字或字母的正则表达式
正则表达式的写法规则:"/规则需要写在2个斜杠中间/". (. :小数点)用于匹配除换行符之外的所有字符. (\s:反斜杠小写s)用于匹配单个空格符,包括tab键和换行符: (\S:反斜杠大写S)用于匹配除单个空格符之外的所有字符: (\d:反斜杠d)用于匹配从0到9的数字:也可以这样写:[0-9] (\w:反斜杠小写w)用于匹配字母,数字或下划线字符: (\W:反斜杠大写W)用于匹配所有与\w不匹配的字符: 元字符包括: +, *,? 元字符理解起来容易混淆,所以我在后面做了代码结果
-
关于php正则匹配汉字的方法介绍
php正则匹配汉字! /^[\x{4e00}-\x{9fa5}]+$/u 以上这个正则表达式就是困扰了很多php程序员的匹配汉字的正则表达式 大家可能会觉得很简单,实际上不同编码,不同程序语言,都有些细微的出入,稍不注意就得不到正确的结果. 下面是utf-8编码的例子:$str = "汉字";if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {print("该字符串全部是中文");} else {
随机推荐
- 简单讲解MySQL的数据库复制方法
- Lua中使用table.concat连接大量字符串实例
- golang中defer的使用规则详解
- 用vbs得到计算机的 IP 地址
- Android:控件GridView的使用实例
- JS使用正则实现去掉字符串左右空格的方法
- 轻松掌握php设计模式之访问者模式
- 详解Python中break语句的用法
- C#日期时间格式化小结
- 详解如何修改 Docker 默认网桥地址
- js实现页面刷新滚动条位置不变
- {}与function(){}选用空对象{}来存放keyValue
- 百度地图API提示230 错误app scode码校验失败的解决办法
- window.open的页面如何刷新(父页面)上层页面
- c#读取文件详谈
- 在ASP.NET Core中显示自定义的错误页面
- JavaScript实现在标题栏上显示当前日期的方法
- c# split分隔字符串使用方法
- C/C++实现矩阵的转置(示例代码)
- 为什么你的网站没流量?做不大?