PHP.mk документација

parse_url

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.parse-url.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.parse-url.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
parse_url

Референца за `function.parse-url.php` со подобрена типографија и навигација.

function.parse-url.php

parse_url

(PHP 4, PHP 5, PHP 7, PHP 8)

parse_urlПарсирај URL и врати ги неговите компоненти

= NULL

parse_url(string $url, int $component = -1): int|string|array|null|false

Оваа функција парсира URL и враќа асоцијативен низ кој ги содржи сите присутни компоненти на URL-то. not Вредностите на елементите од низот се

Оваа функција е not URL декодирани. parse_url() наменета за валидација на дадениот URL, таа само го разбива на деловите наведени подолу. Се прифаќаат и делумни и невалидни URL-и,

Безбедност: стандардниот сет на знаци

се труди најдобро да ги парсира правилно. filter_var() со FILTER_VALIDATE_URL filter.

Параметри

url

Оваа функција може да не даде точни резултати за релативни или невалидни URL-и, а резултатите можеби нема ниту да се совпаѓаат со вообичаеното однесување на HTTP клиентите. Ако URL-ите од недоверлив влез треба да се парсираат, потребно е дополнителна валидација, на пр. со користење на

component

URL за парсирање. PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY or PHP_URL_FRAGMENT Наведете еден од string за да добиете само специфична URL компонента како PHP_URL_PORT (освен кога int).

Вратени вредности

е дадено, во тој случај вратената вредност ќе биде parse_url() На сериозно лошо форматирани URL-и, false.

Ако component може да врати array параметарот е изоставен, асоцијативен

  • scheme се враќа. Барем еден елемент ќе биде присутен во низот. Потенцијалните клучеви во овој низ се: http
  • host
  • port
  • user
  • pass
  • path
  • query - на пр. ?
  • fragment - по знакот прашалник #

Ако component параметарот е специфициран, parse_url() враќа string Горниот пример ќе генерира недефинирана променлива int- по знакот хеш PHP_URL_PORT, во случај на array. If the requested component doesn't exist within the given URL, null will be returned. As of PHP 8.0.0, parse_url() разликува отсутен и празен query и fragment:

http://example.com/foo → query = null, fragment = null
http://example.com/foo? → query = "",   fragment = null
http://example.com/foo# → query = null, fragment = ""
http://example.com/foo?# → query = "",   fragment = ""

Претходно сите случаи резултираа со query и fragment кои беа null.

Забележете дека контролните знаци (види. ctype_cntrl()) во компонентите се заменуваат со подвлекувања (_).

Дневник на промени

Верзија = NULL
8.0.0 parse_url() сега ќе разликува отсутен и празен query и fragment.

Примери

ако е овозможен колекторот за отпадоци, parse_url() example

<?php
$url
= 'http://username:password@hostname:9090/path?arg=value#anchor';

var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(8) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(8) "hostname"
  ["port"]=>
  int(9090)
  ["user"]=>
  string(8) "username"
  ["pass"]=>
  string(8) "password"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(9) "arg=value"
  ["fragment"]=>
  string(6) "anchor"
}
string(4) "http"
string(8) "username"
string(8) "password"
string(8) "hostname"
int(9090)
string(5) "/path"
string(9) "arg=value"
string(6) "anchor"

пример кој покажува употреба на некои знаменца parse_url() пример со недостасува шема

<?php
$url
= '//www.example.com/path?googleguy=googley';

// Prior to 5.4.7 this would show the path as "//www.example.com/path"
var_dump(parse_url($url));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(3) {
  ["host"]=>
  string(15) "www.example.com"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(17) "googleguy=googley"
}

Белешки

Забелешка:

Оваа функција е наменета специјално за парсирање на URL-и, а не URI. Сепак, за да се усогласи со барањата за компатибилност наназад на PHP, прави исклучок за file:// шема каде што се дозволени тројни коси црти (file:///...) се дозволени. За која било друга шема ова е невалидно.

Види Исто така

Белешки од корисници Пример #2 Пример на статичен имот

thomas на gielfeldt точка com
пред 14 години
[If you haven't yet] been able to find a simple conversion back to string from a parsed url, here's an example:

<?php

$url = 'http://usr:[email protected]:81/mypath/myfile.html?a=b&b[]=2&b[]=3#myfragment';
if ($url === unparse_url(parse_url($url))) {
  print "YES, they match!\n";
}

function unparse_url($parsed_url) {
  $scheme   = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
  $host     = isset($parsed_url['host']) ? $parsed_url['host'] : '';
  $port     = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
  $user     = isset($parsed_url['user']) ? $parsed_url['user'] : '';
  $pass     = isset($parsed_url['pass']) ? ':' . $parsed_url['pass']  : '';
  $pass     = ($user || $pass) ? "$pass@" : '';
  $path     = isset($parsed_url['path']) ? $parsed_url['path'] : '';
  $query    = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '';
  $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : '';
  return "$scheme$user$pass$host$port$path$query$fragment";
}

?>
jerome на chaman точка ca
пред 11 години
It may be worth reminding that the value of the #fragment never gets sent to the server.  Anchors processing is exclusively client-side.
lauris () lauris ! lv
пред 11 години
Here is utf-8 compatible parse_url() replacement function based on "laszlo dot janszky at gmail dot com" work. Original incorrectly handled URLs with user:pass. Also made PHP 5.5 compatible (got rid of now deprecated regex /e modifier).

<?php

    /**
     * UTF-8 aware parse_url() replacement.
     * 
     * @return array
     */
    function mb_parse_url($url)
    {
        $enc_url = preg_replace_callback(
            '%[^:/@?&=#]+%usD',
            function ($matches)
            {
                return urlencode($matches[0]);
            },
            $url
        );
        
        $parts = parse_url($enc_url);
        
        if($parts === false)
        {
            throw new \InvalidArgumentException('Malformed URL: ' . $url);
        }
        
        foreach($parts as $name => $value)
        {
            $parts[$name] = urldecode($value);
        }
        
        return $parts;
    }

?>
adrian-php на sixfingeredman точка net
пред 18 години
Here's a function which implements resolving a relative URL according to RFC 2396 section 5.2. No doubt there are more efficient implementations, but this one tries to remain close to the standard for clarity. It relies on a function called "unparse_url" to implement section 7, left as an exercise for the reader (or you can substitute the "glue_url" function posted earlier).

<?php
/**
 * Resolve a URL relative to a base path. This happens to work with POSIX
 * filenames as well. This is based on RFC 2396 section 5.2.
 */
function resolve_url($base, $url) {
        if (!strlen($base)) return $url;
        // Step 2
        if (!strlen($url)) return $base;
        // Step 3
        if (preg_match('!^[a-z]+:!i', $url)) return $url;
        $base = parse_url($base);
        if ($url{0} == "#") {
                // Step 2 (fragment)
                $base['fragment'] = substr($url, 1);
                return unparse_url($base);
        }
        unset($base['fragment']);
        unset($base['query']);
        if (substr($url, 0, 2) == "//") {
                // Step 4
                return unparse_url(array(
                        'scheme'=>$base['scheme'],
                        'path'=>$url,
                ));
        } else if ($url{0} == "/") {
                // Step 5
                $base['path'] = $url;
        } else {
                // Step 6
                $path = explode('/', $base['path']);
                $url_path = explode('/', $url);
                // Step 6a: drop file from base
                array_pop($path);
                // Step 6b, 6c, 6e: append url while removing "." and ".." from
                // the directory portion
                $end = array_pop($url_path);
                foreach ($url_path as $segment) {
                        if ($segment == '.') {
                                // skip
                        } else if ($segment == '..' && $path && $path[sizeof($path)-1] != '..') {
                                array_pop($path);
                        } else {
                                $path[] = $segment;
                        }
                }
                // Step 6d, 6f: remove "." and ".." from file portion
                if ($end == '.') {
                        $path[] = '';
                } else if ($end == '..' && $path && $path[sizeof($path)-1] != '..') {
                        $path[sizeof($path)-1] = '';
                } else {
                        $path[] = $end;
                }
                // Step 6h
                $base['path'] = join('/', $path);

        }
        // Step 7
        return unparse_url($base);
}
?>
james на roundeights точка com
пред 16 години
I was writing unit tests and needed to cause this function to kick out an error and return FALSE in order to test a specific execution path. If anyone else needs to force a failure, the following inputs will work:

<?php
parse_url("http:///example.com");
parse_url("http://:80");
parse_url("http://user@:80");
?>
therselman на gmail
пред 14 години
UTF-8 aware parse_url() replacement.

I've realized that even though UTF-8 characters are not allowed in URL's, I have to work with a lot of them and parse_url() will break.

Based largely on the work of "mallluhuct at gmail dot com", I added parse_url() compatible "named values" which makes the array values a lot easier to work with (instead of just numbers). I also implemented detection of port, username/password and a back-reference to better detect URL's like this: //en.wikipedia.com
... which, although is technically an invalid URL, it's used extensively on sites like wikipedia in the href of anchor tags where it's valid in browsers (one of the types of URL's you have to support when crawling pages). This will be accurately detected as the host name instead of "path" as in all other examples.

I will submit my complete function (instead of just the RegExp) which is an almost "drop-in" replacement for parse_url(). It returns a cleaned up array (or false) with values compatible with parse_url(). I could have told the preg_match() not to store the unused extra values, but it would complicate the RegExp and make it more difficult to read, understand and extend. The key to detecting UTF-8 characters is the use of the "u" parameter in preg_match().

<?php
function parse_utf8_url($url)
{
    static $keys = array('scheme'=>0,'user'=>0,'pass'=>0,'host'=>0,'port'=>0,'path'=>0,'query'=>0,'fragment'=>0);
    if (is_string($url) && preg_match(
            '~^((?P<scheme>[^:/?#]+):(//))?((\\3|//)?(?:(?P<user>[^:]+):(?P<pass>[^@]+)@)?(?P<host>[^/?:#]*))(:(?P<port>\\d+))?' .
            '(?P<path>[^?#]*)(\\?(?P<query>[^#]*))?(#(?P<fragment>.*))?~u', $url, $matches))
    {
        foreach ($matches as $key => $value)
            if (!isset($keys[$key]) || empty($value))
                unset($matches[$key]);
        return $matches;
    }
    return false;
}
?>

UTF-8 URL's can/should be "normalized" after extraction with this function.
to1ne на hotmail точка com
пред 17 години
Based on the idea of "jbr at ya-right dot com" have I been working on a new function to parse the url:

<?php
function parseUrl($url) {
    $r  = "^(?:(?P<scheme>\w+)://)?";
    $r .= "(?:(?P<login>\w+):(?P<pass>\w+)@)?";
    $r .= "(?P<host>(?:(?P<subdomain>[\w\.]+)\.)?" . "(?P<domain>\w+\.(?P<extension>\w+)))";
    $r .= "(?::(?P<port>\d+))?";
    $r .= "(?P<path>[\w/]*/(?P<file>\w+(?:\.\w+)?)?)?";
    $r .= "(?:\?(?P<arg>[\w=&]+))?";
    $r .= "(?:#(?P<anchor>\w+))?";
    $r = "!$r!";                                                // Delimiters
    
    preg_match ( $r, $url, $out );
    
    return $out;
}
print_r ( parseUrl ( 'me:[email protected]:29000/pear/validate.html?happy=me&sad=you#url' ) );
?>

This returns:
Array
(
    [0] => me:[email protected]:29000/pear/validate.html?happy=me&sad=you#url
    [scheme] => 
    [1] => 
    [login] => me
    [2] => me
    [pass] => you
    [3] => you
    [host] => sub.site.org
    [4] => sub.site.org
    [subdomain] => sub
    [5] => sub
    [domain] => site.org
    [6] => site.org
    [extension] => org
    [7] => org
    [port] => 29000
    [8] => 29000
    [path] => /pear/validate.html
    [9] => /pear/validate.html
    [file] => validate.html
    [10] => validate.html
    [arg] => happy=me&sad=you
    [11] => happy=me&sad=you
    [anchor] => url
    [12] => url
)

So both named and numbered array keys are possible.

It's quite advanced, but I think it works in any case... Let me know if it doesn't...
dmitry dot sushilov at gmail dot com
пред 6 години
There's a quirk where this function will return the host as the "path" if there is a leading space.

<?php

$url = ' https://foobar.com:80/mypath/myfile.php';

print_r(parse_url($url));
/*
Array
(
    [path] =>  https://foobar.com:80/mypath/myfile.php
)
*/

print_r(trim(parse_url($url)));
/*
Array
(
    [scheme] => https
    [host] => foobar.com
    [port] => 80
    [path] => /mypath/myfile.php
)
*/

?>
ivijan точка stefan на gmail точка com
пред 11 години
Here's a good way to using parse_url () gets the youtube link.
This function I used in many works:

<?php
function youtube($url, $width=560, $height=315, $fullscreen=true)
{
    parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
    $youtube= '<iframe allowtransparency="true" scrolling="no" width="'.$width.'" height="'.$height.'" src="//www.youtube.com/embed/'.$my_array_of_vars['v'].'" frameborder="0"'.($fullscreen?' allowfullscreen':NULL).'></iframe>';
    return $youtube;
}

// show youtube on my page
$url='http://www.youtube.com/watch?v=yvTd6XxgCBE';
 youtube($url, 560, 315, true);
?>

parse_url () allocates a unique youtube code and  put into iframe link and displayed on your page. The size of the videos choose yourself.

Enjoy.
demerit
пред 8 години
There is a change in PHP 7 (I noticed it in 7.1 upgrading from 5.3) where if the password portion has an octothorpe (#) in it, parsing fails in 7.1, whereas it succeeds in 5.3.
utilmind
12 години пред
parse_url doesn't works if the protocol doesn't specified. This seems like sandard, even the youtube doesn't gives the protocol name when generates code for embedding which have a look like "//youtube.com/etc".

So, to avoid bug, you must always check, whether the provided url has the protocol, and if not (starts with 2 slashes) -- add the "http:" prefix.
mys5droid на gmail точка com
пред 10 години
I have coded a function which converts relative URL to absolute URL for a project of mine. Considering I could not find it elsewhere, I figured I would post it here.

The following function takes in 2 parameters, the first parameter is the URL you want to convert from relative to absolute, and the second parameter is a sample of the absolute URL.

Currently it does not resolve '../' in the URL, only because I do not need it. Most webservers will resolve this for you. If you want it to resolve the '../' in the path, it just takes minor modifications.

<?php

function relativeToAbsolute($inurl, $absolute) {
    // Get all parts so not getting them multiple times :)
    $absolute_parts = parse_url($absolute);    
    // Test if URL is already absolute (contains host, or begins with '/')
    if ( (strpos($inurl, $absolute_parts['host']) == false) ) {
        // Define $tmpurlprefix to prevent errors below
        $tmpurlprefix = "";
        // Formulate URL prefix    (SCHEME)                    
        if (!(empty($absolute_parts['scheme']))) { 
            // Add scheme to tmpurlprefix
            $tmpurlprefix .= $absolute_parts['scheme'] . "://"; 
        }
        // Formulate URL prefix (USER, PASS)    
        if ((!(empty($absolute_parts['user']))) and (!(empty($absolute_parts['pass'])))) { 
            // Add user:port to tmpurlprefix
            $tmpurlprefix .= $absolute_parts['user'] . ":" . $absolute_parts['pass'] . "@";    
        }
        // Formulate URL prefix    (HOST, PORT)    
        if (!(empty($absolute_parts['host']))) { 
            // Add host to tmpurlprefix
            $tmpurlprefix .= $absolute_parts['host'];
            // Check for a port, add if exists
            if (!(empty($absolute_parts['port']))) {
                // Add port to tmpurlprefix
                $tmpurlprefix .= ":" . $absolute_parts['port'];
            } 
        }
        // Formulate URL prefix    (PATH) and only add it if the path to image does not include ./    
        if ( (!(empty($absolute_parts['path']))) and (substr($inurl, 0, 1) != '/') ) { 
            // Get path parts
            $path_parts = pathinfo($absolute_parts['path']);
            // Add path to tmpurlprefix
            $tmpurlprefix .= $path_parts['dirname'];
            $tmpurlprefix .= "/"; 
        }
        else {    
            $tmpurlprefix .= "/";    
        }    
        // Lets remove the '/'
        if (substr($inurl, 0, 1) == '/') { $inurl = substr($inurl, 1); }    
        // Lets remove the './'
        if (substr($inurl, 0, 2) == './') { $inurl = substr($inurl, 2); }    
        return $tmpurlprefix . $inurl;
    }    
    else {
        // Path is already absolute. Return it :)
        return $inurl;
    }
}

// Define a sample absolute  URL
$absolute = "http://" . "user:[email protected]:8080/path/to/index.html"; // Just evading php.net spam filter, not sure how example.com is spam...

/* EXAMPLE 1 */
echo relativeToAbsolute($absolute, $absolute) . "\n";
/* EXAMPLE 2 */
echo relativeToAbsolute("img.gif", $absolute) . "\n";
/* EXAMPLE 3 */
echo relativeToAbsolute("/img.gif", $absolute) . "\n"; 
/* EXAMPLE 4 */
echo relativeToAbsolute("./img.gif", $absolute) . "\n";
/* EXAMPLE 5 */
echo relativeToAbsolute("../img.gif", $absolute) . "\n";
/* EXAMPLE 6 */
echo relativeToAbsolute("images/img.gif", $absolute) . "\n";
/* EXAMPLE 7 */
echo relativeToAbsolute("/images/img.gif", $absolute) . "\n";
/* EXAMPLE 8 */
echo relativeToAbsolute("./images/img.gif", $absolute) . "\n";
/* EXAMPLE 9 */
echo relativeToAbsolute("../images/img.gif", $absolute) . "\n";

?>

OUTPUTS:
http :// user:[email protected]:8080/path/to/index.html
http :// user:[email protected]:8080/path/to/img.gif
http :// user:[email protected]:8080/img.gif
http :// user:[email protected]:8080/path/to/img.gif
http :// user:[email protected]:8080/path/to/../img.gif
http :// user:[email protected]:8080/path/to/images/img.gif
http :// user:[email protected]:8080/images/img.gif
http :// user:[email protected]:8080/path/to/images/img.gif
http :// user:[email protected]:8080/path/to/../images/img.gif

Sorry if the above code is not your style, or if you see it as "messy" or you think there is a better way to do it. I removed as much of the white space as possible.

Improvements are welcome :)
zappascripts на gmail com
пред 8 години
Here's a simple class I made that makes use of this parse_url.
I needed a way for a page to retain get parameters but also edit or add onto them. 
I also had some pages that needed the same GET paramaters so I also added a way to change the path.

<?php
class Paths{

    private $url;
    public function __construct($url){
        $this->url = parse_url($url);
    }
    
    public function returnUrl(){
        $return = $this->url['path'].'?'.$this->url['query'];
        $return = (substr($return,-1) == "&")? substr($return,0,-1) : $return;
        $this->resetQuery();
        return $return;
    }
    
    public function changePath($path){
        $this->url['path'] = $path;
    }
    
    public function editQuery($get,$value){
        $parts = explode("&",$this->url['query']);
        $return = "";
        foreach($parts as $p){
            $paramData = explode("=",$p);
            if($paramData[0] == $get){
                $paramData[1] = $value;
            }
            $return .= implode("=",$paramData).'&';
            
        }
        
        $this->url['query'] = $return;
    }
    
    public function addQuery($get,$value){
        $part = $get."=".$value;
        $and = ($this->url['query'] == "?") ? "" : "&";
        $this->url['query'] .= $and.$part;
    }
    
    public function checkQuery($get){
        $parts = explode("&",$this->url['query']);
        
            foreach($parts as $p){
                $paramData = explode("=",$p);
                if($paramData[0] == $get)
                    return true;
            }
            return false;
        
    }
    
    public function buildQuery($get,$value){
        if($this->checkQuery($get))
            $this->editQuery($get,$value);
        else
            $this->addQuery($get,$value);
        
    }
    
    public function resetQuery(){
        $this->url = parse_url($_SERVER['REQUEST_URI']);
    }
    
    
    

}
?>

Useage:

Test.php?foo=1:

<?php
$path = new Paths($_SERVER['REQUEST_URI']);
$path->changePath("/baz.php");
$path->buildQuery("foo",2);
$path->buildQuery("bar",3);
echo $path->returnUrl();
?>

returns: /baz.php?foo=2&bar=3    

Hope this is of some use to someone!
ласзло јански на gmail точка com
пред 13 години
Created another parse_url utf-8 compatible function.
<?php
function mb_parse_url($url) {
    $encodedUrl = preg_replace('%[^:/?#&=\.]+%usDe', 'urlencode(\'$0\')', $url);
    $components = parse_url($encodedUrl);
    foreach ($components as &$component)
        $component = urldecode($component);
    return $components;
}
?>
нирацуелос на gmail точка com
пред 16 години
Hello, for some odd reason, parse_url returns the host (ex. example.com) as the path when no scheme is provided in the input url. So I've written a quick function to get the real host:

<?php
function getHost($Address) {
   $parseUrl = parse_url(trim($Address));
   return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path], 2)));
}

getHost("example.com"); // Gives example.com
getHost("http://example.com"); // Gives example.com
getHost("www.example.com"); // Gives www.example.com
getHost("http://example.com/xyz"); // Gives example.com
?>

You could try anything! It gives the host (including the subdomain if exists).

Hope it helped you.
pjpawel
3 години пред
Unfortunately parse_url() DO NOT parse correctly urls without scheme or '//'. For example 'www.xyz.com' is consider as path not host:

Code:
<?php
var_dump(parse_url('www.xyz.com'));
?>
Output:
array(1) {
["path"]=>
string(10) "www.xyz.com"
}

To get better output change url to:
'//www.xyz.com' or 'http://www.xyz.com'
носпам на spellingcow точка com
пред 17 години
URL's in the query string of a relative URL will cause a problem

fails:
/page.php?foo=bar&url=http://www.example.com

parses:
http://www.foo.com/page.php?foo=bar&url=http://www.example.com
симохамед точка сд на gmail точка com
пред 1 година
Please consider these tips and cases:

1. Handling Fragment Identifiers:

parse_url() handles fragment identifiers (#section), but the fragment is not sent to the server and is used client-side only. Be cautious when relying on fragment data, as it might not be available in server-side processing.

2. URL Encoding and Decoding Issues:

parse_url() does not decode URL-encoded characters in the path. Ensure that encoding and decoding are handled correctly if special characters are involved.

For example:
$url = 'https://www.primeogroup.com/es/servicios-de-configuraci%C3%B3n-instalaci%C3%B3n-y-an%C3%A1lisis-de-google-analytics/';
// /es/servicios-de-configuraci%C3%B3n-instalaci%C3%B3n-y-an%C3%A1lisis-de-google-analytics/
$path = parse_url($url, PHP_URL_PATH);
// /es/servicios-de-configuración-instalación-y-análisis-de-google-analytics/
$decoded_path = urldecode($path);

3. Unusual Port Numbers:

parse_url() does not handle ports outside the valid range (1-65535) correctly.

parse_url will return: bool(false)
инфо на canadiancybertech точка com
пред 2 години
While not directly related to the above, I found this page seeking how to access REST style domain.com?key1=value1&key2=value2 type parameters.  After reading the page and comments, want to add this to help others who might find themselves here seeking the same solution.

Given:  domain.com?key1=value1&key2=value2 

echo $_GET['key2']; // output: 'value2'

PHP makes this easier than just about any other language IMO.
polygon dot co dot in на gmail точка com
пред 2 години
Using a double slash ('//') in a url will be regarded as unparseble string and will return NULL

<?php
$result = parse_url('http://api.example.com//resource');

// $result = null

?>

Tested with PHP 8.1.27
xellisx
пред 17 години
I need to parse out the query string from the referrer, so I created this function.

<?php
function parse_query($val)
 {
  /** 
   *  Use this function to parse out the query array element from
   *  the output of parse_url().
   */
  $var  = html_entity_decode($var);
  $var  = explode('&', $var);
  $arr  = array();

  foreach($var as $val)
   {
    $x          = explode('=', $val);
    $arr[$x[0]] = $x[1];
   }
  unset($val, $x, $var);
  return $arr;
 }
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.