PHP ile Metin Halindeki URL'den GET Verilerini Alma
Merhaba PT.
https://www.prototurk.com/sorular/cevaplar?sayfa=2&filtre=prototurk,soru,cevap
şeklinde metin olarak elimde olan bir bağlantının GET başlıklarını ve içeriğini almaya çalışıyorum.
$url = "https://www.prototurk.com/sorular/cevaplar?sayfa=2&filtre=prototurk,soru,cevap";
$getItems = explode("?", $url);
// $getItems[1] ÇIKTISI - sayfa=2&filtre=prototurk,soru,cevap
Bu şekilde aldıktan sonra içindeki verilere nasıl ulaşabileceğimi bulamadım.
İstediğim sonuç;
$sonuc = [
"sayfa" => '2',
"filtre" => 'prototurk,soru,cevap'
];
veya başka bir get içeriği varsa onları da yukarıdaki dizi gibi almaya çalışıyorum. :)
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (7)
@serkan hocam gerçek link üzerinden kolay, metin olarak elimizde olan bir URL üzerinde bu işlemi yapabilmem gerekiyor.
Araştırmalarım sonucu şuna ulaştım, istediğim sonucu veriyor. İhtiyacı olan olursa deneyebilir, daha iyi bir çözüm varsa onu da ekleyebilirsiniz.
$url = "https://www.prototurk.com/sorular/cevaplar?sayfa=2&filtre=prototurk,soru,cevap";
$getItems = explode("?", $url);
parse_str($getItems[1], $itemArray);
Merhaba,
Bu tür bağlantılarda, GET başlıkları ve değerleri "?" karakterinden sonra "&" karakteri ile ayrılır. Bu nedenle, URL'yi parçalayarak bu başlıkları ve değerlerini elde edebilirsiniz. Örnek olarak, aşağıdaki kod parçacığını deneyebilirsiniz:
$url = "https://www.prototurk.com/sorular/cevaplar?sayfa=2&filtre=prototurk,soru,cevap";
$getItems = explode("?", $url);
$getParams = explode("&", $getItems[1]);
$result = array();
foreach ($getParams as $param) {
$paramItems = explode("=", $param);
$result[$paramItems[0]] = $paramItems[1];
}
print_r($result);
Bu kod parçacığında, explode() fonksiyonunu kullanarak URL'yi "?" karakterine göre parçalıyoruz ve daha sonra parçalanmış dizinin ikinci elemanını tekrar "&" karakterine göre parçalıyoruz. Daha sonra, bu parçalanmış diziyi döngü ile geziyor ve her bir elemanı "=" karakterine göre parçalıyoruz. Böylece, her bir GET başlığı ve değerini ayrıştırabiliyoruz. Döngü bittikten sonra, $result dizisi içinde istediğiniz sonuçları bulabilirsiniz.
Umarım bu bilgiler yardımcı olur. İyi çalışmalar!
$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));
@serkan hocam bu sonuç işimi nasıl görecek tam olarak anlayamadım. :)
key=>0 value=>https://www.prototurk.com/sorular/cevaplar key=>1 value=>sayfa=2&filtre=prototurk,soru,cevap
Anlatmak istediğimi tam anlamadınız sanırım. GET'den gelen sayfa ve onun değeri, filtre ve onun değeri şeklinde dizi olarak almam gerekiyor. Yani tam olarak $sonuç
değişkenindeki dizi gibi.