parse_url

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

parse_urlBir URL'yi bileşenlerine ayırır

Açıklama

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

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.

Bağımsız Değişkenler

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.

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:

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 Bilgisi

Sürüm: Açıklama
8.0.0parse_url() artık eksik ve boş sorguları ve parçaları ayırt ediyor.

Ö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.

Ayrıca Bakınız

To Top