parse_url
(PHP 4, PHP 5, PHP 7, PHP 8)
parse_url — Bir URL'yi bileşenlerine ayırır
Açıklama
Bu işlev, bir URL doğrulayıcı olarak kullanılmamalıdır. Yaptığı sadece
URL'yi aşağıda belirtilen parçalara ayırmaktır. Kısmi ve geçersiz URL'ler de
kabul edilir. İşlev bunları en doğru şekilde bileşenlerine ayırmaya çalışır.
Dönen Değerler
Tehlikeli şekilde bozulmuş URL'lerde parse_url() false
döndürebilir.
bileşen atlanırsa, en az bir elememanlı ilişkisel
bir dizi döner. Dizide bulunması olası anahtarlar şunlardır:
-
scheme - http:// gibi
-
host - konak ismi
-
port - port
-
user - kullanıcı
-
pass - parola
-
path - dosya yolu
-
query - sorgu; bir soru
(
?) iminden sonra.
-
fragment - örgü;
# iminden sonra
bileşen bağımsız değişkeni belirtilmişse işlev bir dizi
yerine bir dizge döndürür (dönüş değeri int türünde olan
PHP_URL_PORT belirtilmesi dışında). İstenen bileşen
belirtilen URL'de yoksa null döner. PHP 8.0.0 itibariyle,
parse_url() eksik ve boş sorguları ve parçaları ayırt
etmektedir:
Evvelce tüm durumlar, sorgu ve parçanın null olmasıyla sonuçlanıyordu.
Bileşenlerdeki denetim karakterlerinin yerine alt çizgiler konur (bkz.
ctype_cntrl())
Örnekler
Örnek 1 - parse_url() örneği
<?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));
?>
Yukarıdaki örneğin çıktısı:
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"
Örnek 2 - Eksik şemalı parse_url() örneği
<?php
$url = '//www.example.com/path?googleguy=googley';
// 5.4.7 öncesinde dosya yolu olarak "//www.example.com/path" gösterilirdi.
var_dump(parse_url($url));
?>
Yukarıdaki örneğin çıktısı:
array(3) {
["host"]=>
string(15) "www.example.com"
["path"]=>
string(5) "/path"
["query"]=>
string(17) "googleguy=googley"
}
Notlar
Dikkat
Bu işlev göreli veya geçersiz URL'lerle doğru sonuç vermeyebilir ve
sonuçlar HTTP istemcilerin davranışlarıyla da eşleşmeyebilir. Güvenilmez
girdideki URL'lerin çözümlenmesi gerekirse, ek bir doğrulama gerekir.
Örnek: filter_var() işlevinin
FILTER_VALIDATE_URL süzgeci ile kullanımı.
Bilginize:
Bu işlev URI'leri değil, özellikle URL'leri ayrıştırmak için
tasarlanmıştır. Ancak, PHP'nin geriye uyumluluğu için
file:// şeması için istisnai bir durum olarak
file:/// şemasına da izin verilir. Bunun dışındaki
şemalar için bu uygulama geçersizdir.