PHP - 解析当前URL

时间:2011-04-08 17:10:44

标签: php parsing

我需要解析当前的url,以便在以下任何一种情况下:

http://mydomain.com/abc/
http://www.mydomain.com/abc/

我可以获得“abc”的返回值(或者该位置的任何文本)。我怎么能这样做?

6 个答案:

答案 0 :(得分:36)

您可以使用parse_url();

$url = 'http://www.mydomain.com/abc/';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);

会给你

Array
(
    [scheme] => http
    [host] => www.mydomain.com
    [path] => /abc/
)
/abc/

更新:获取当前页面网址,然后解析它:

function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

print_r(parse_url(curPageURL()));

echo parse_url($url, PHP_URL_PATH);

source for curPageURL function

答案 1 :(得分:10)

查看parse_url()功能。它会将URL分解为其组成部分。您关注的部分是路径,因此您可以将PHP_URL_PATH作为第二个参数传递。如果您只想要路径的第一部分,则可以使用explode()使用/作为分隔符将其拆分。

$url = "http://www.mydomain.com/abc/";
$path = parse_url($url, PHP_URL_PATH);
$pathComponents = explode("/", trim($path, "/")); // trim to prevent
                                                  // empty array elements
echo $pathComponents[0]; // prints 'abc'

答案 2 :(得分:4)

要检索当前网址,您可以使用$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

之类的内容

如果您想完全匹配 路径的第一个和第二个之间的内容,请尝试直接使用$_SERVER['REQUEST_URI']

<?php

function match_uri($str)
{
  preg_match('|^/([^/]+)|', $str, $matches);

  if (!isset($matches[1]))
    return false;

  return $matches[1];  
}

echo match_uri($_SERVER['REQUEST_URI']);

只是为了好玩,使用strpos() + substr()代替preg_match()的版本应该快几毫秒:

function match_uri($str)
{
  if ($str{0} != '/')
    return false;

  $second_slash_pos = strpos($str, '/', 1);

  if ($second_slash_pos !== false)
    return substr($str, 1, $second_slash_pos-1);
  else
    return substr($str, 1);
}

HTH

答案 3 :(得分:2)

<?php
$url = "http://www.mydomain.com/abc/"; //https://www... http://... https://...
echo substr(parse_url($url)['path'],1,-1); //return abc
?>

答案 4 :(得分:1)

$url = 'http://www.mydomain.in/abc/';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_host);

答案 5 :(得分:0)

<?function urlSegment($i = NULL) {
static $uri;
if ( NULL === $uri )
{
    $uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
    $uri = explode( '/', $uri );
    $uri = array_filter( $uri );
    $uri = array_values( $uri );
}
if ( NULL === $i )
{
    return '/' . implode( '/', $uri );
}
$i =  ( int ) $i - 1;
$uri = str_replace('%20', ' ', $uri);
return isset( $uri[$i] ) ? $uri[$i] : NULL;} ?>
浏览器中的

示例地址:http://localhost/this/is/a/sample url

<?  urlSegment(1); //this
urlSegment(4); //sample url?>