程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP用正則匹配獲取URL中的域名

PHP用正則匹配獲取URL中的域名

編輯:關於PHP編程

在PHP的官網上看到的parse_url()函數的替代方案。結果和parse_url()函數差不多,是使用正則實現的。

URI 是 Web上可用的每種資源 - HTML文檔、圖像、視頻片段、程序等 - 由一個通用資源標志符(Uniform Resource Identifier, 簡稱"URI")進行定位。 對象分組:

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12            3  4          5       6  7        8 9

測試代碼如下:

<?php
$search = '~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~i';
$url = 'http://www.bkjia.com/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.bkjia.com
      $4 = www.bkjia.com
      $5 = /pub/ietf/uri/
      $6 = <undefined>
      $7 = <undefined>
      $8 = #Gonn
      $9 = Gonn
*/
?>

上面的正則表達式可以獲取URL中的任何一部分,下面的代碼則簡單一些:

<?php 
// 從 URL 中取得主機名 
preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.bkjia.com/index.html", $matches); 
$host = $matches[2]; 
// 從主機名中取得後面兩段 
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); 
echo "domain name is: {$matches[0]}\n"; 
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved