(PHP 4, PHP 5, PHP 7, PHP 8)
parse_url — Bir URL'yi bileşenlerine ayırır
Bu işlev belirtilen URL'yi bileşenlerine ayırıp, bunları bir ilişkisel dizi içinde döndürür. Dizi elemanlarının değerleri URL'nin kodu çözülmüş bileşenleri değildir.
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.
url
Ayrıştırılacak URL.
bileşen
Belli bir URL bileşenini dizge olarak (dönüş değeri int türünde olan PHP_URL_PORT
dışında) döndürmek isterseniz bu bağımsız değişkende şu sabitlerden birini belirtin: PHP_URL_SCHEME
, PHP_URL_HOST
, PHP_URL_USER
, PHP_URL_PASS
, PHP_URL_PATH
, PHP_URL_QUERY
, PHP_URL_FRAGMENT
.
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:
?
) iminden sonra. #
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:
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 = ""
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())
Sürüm: | Açıklama |
---|---|
8.0.0 | parse_url() artık eksik ve boş sorguları ve parçaları ayırt ediyor. |
Ö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" }
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 olarakfile:///
şemasına da izin verilir. Bunun dışındaki şemalar için bu uygulama geçersizdir.