Heim > php教程 > PHP开发 > Hauptteil

Eine einfache Möglichkeit, URLs mit regulären Ausdrücken in PHP abzugleichen

黄舟
Freigeben: 2016-12-12 15:54:49
Original
1769 Leute haben es durchsucht

在PHP的官网上看到的parse_url()函数的替代方案。结果和parse_url()函数差不多,是使用正则实现的。URI 是 Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位。 对象分组:


^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12            3  4
Nach dem Login kopieren

测试代码如下:

<?php
$search = &#39;~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~i&#39;;
$url = &#39;http://www.jb51.net/pub/ietf/uri/#Gonn&#39;;
$url = trim($url);
preg_match_all($search, $url ,$rr);
printf("<p>输出URL数据为:</p><pre class="brush:php;toolbar:false">%s
\n",var_export( $rr ,TRUE)); /* 各分组如下 $1 = http: $2 = http $3 = //www.nowamagic.net $4 = www.nowamagic.net $5 = /pub/ietf/uri/ $6 = $7 = $8 = #Gonn $9 = Gonn */ ?>
Nach dem Login kopieren

上面的正则表达式可以获取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"; 
?>
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage