v2.5.2
Giriş yap

PHP ile Metin Halindeki URL'den GET Verilerini Alma

redline
260 defa görüntülendi

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. :)

Cevap yaz
Cevaplar (7)
redline
517 gün önce

@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);
h4ckdr0
506 gün önce

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!

kartal
517 gün önce

Tekrar dizi yapman gerek & yide explode et,
sonra
$exp[0] //sayfa
$exp[1] //değer

qplot
517 gün önce
$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
517 gün önce

Mobilden girrdiğim için alt tarafı göremedim birde gerçek bir link üzerinde
çalışıtman lazım.

redline
517 gün önce

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

serkan
517 gün önce
<?php
foreach ($_GET as $key => $value) {
   print_r($key. $value."<br>");
}
?>