Apa cara "kode kurang diperlukan" untuk mendapatkan parameter dari string kueri URL yang diformat seperti berikut?
www.mysite.com/category/subcategory?myqueryhash
Output harus: myqueryhash
Saya mengetahui pendekatan ini:
www.mysite.com/category/subcategory?q=myquery
<?php
echo $_GET['q']; //Output: myquery
?>
php
url
query-string
enloz
sumber
sumber
$_SERVER['QUERY_STRING']
akan ditampilkanfoo=bar2
untuk string kueri sepertifoo=bar1&foo=bar2
print_r()
pernyataan dalam<pre>
tag:echo '<pre>'.print_r($_SERVER, TRUE).'</pre>';
.$_SERVER['REQUEST_URI']
, meskipun Anda mungkin ingin mempertimbangkan untuk menggunakan mod_rewrite untuk meneruskan bagian URL sebagai variabel. Lihat stackoverflow.com/questions/16388959/url-rewriting-with-phpCara PHP untuk melakukannya adalah menggunakan fungsi parse_url , yang mem-parsing URL dan mengembalikan komponen-komponennya. Termasuk string kueri.
Contoh:
Dokumentasi lengkap di sini
sumber
Fungsi
parse_str()
secara otomatis membaca semua parameter kueri ke dalam array.Misalnya, jika URL-nya
http://www.example.com/page.php?x=100&y=200
, kodenyaakan menyimpan parameter ke dalam
$queries
array ($queries['x']=100
,$queries['y']=200
).Lihatlah dokumentasi parse_str
EDIT
Menurut dokumentasi PHP,
parse_str()
seharusnya hanya digunakan dengan parameter kedua. Menggunakanparse_str($_SERVER['QUERY_STRING'])
URL ini akan membuat variabel$x
dan$y
, yang membuat kode rentan terhadap serangan sepertihttp://www.example.com/page.php?authenticated=1
.sumber
parse_str
, tetapi tentu saja itu dianggap sebagai tidak-tidak.parse_str($_SERVER['QUERY_STRING'], $params);
-$params
array sekarang akan berisi semua nilai string kueri.Jika Anda ingin seluruh string kueri:
sumber
Saya akan merekomendasikan jawaban terbaik sebagai
<?php echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ?>
Dengan asumsi pengguna memasukkan http://example.com/?name=Hannes
Contoh di atas akan menampilkan:
Halo Hannes!
sumber
example.com/?Hannes
...Juga jika Anda mencari nama file saat ini bersama dengan string kueri, Anda hanya perlu mengikuti
Ini akan memberi Anda info seperti contoh berikut
Dan jika Anda juga menginginkan path lengkap file juga mulai dari root, misal /folder/folder2/file.php?arg1=val&arg2=val maka hapus saja fungsi basename () dan gunakan pengisian saja
sumber
/
adalah karakter yang valid dalam string kueri (lihat RFC 3986 ), jadi Anda tidak dapat mengandalkanbasename
.Inilah fungsi saya untuk membangun kembali bagian-bagian dari string kueri REFERRER .
Jika halaman panggilan sudah memiliki string kueri di URL -nya sendiri , dan Anda harus kembali ke halaman itu dan ingin mengirim kembali sebagian, tidak semua, dari
$_GET
vars itu (mis. Nomor halaman).Contoh: String kueri pengarah
?foo=1&bar=2&baz=3
meneleponrefererQueryString( 'foo' , 'baz' )
pengembalianfoo=1&baz=3"
:sumber
Kode dan notasi ini bukan milik saya. Evan K memecahkan kueri nama multi nilai yang sama dengan fungsi kustom;) diambil dari:
http://php.net/manual/en/function.parse-str.php#76792 Kredit diberikan ke Evan K.
Perlu disebutkan bahwa parse_str builtin TIDAK memproses string kueri dengan cara standar CGI, ketika datang ke bidang duplikat. Jika beberapa bidang dengan nama yang sama ada dalam string kueri, setiap bahasa pemrosesan web lainnya akan membacanya menjadi sebuah array, tetapi PHP diam-diam menimpa mereka:
sumber
Terima kasih kepada @K. Shahzad Ini membantu saat Anda menginginkan string kueri yang ditulis ulang tanpa penambahan apa pun. Katakanlah Anda menulis ulang / test /? X = y ke index.php? Q = test & x = y dan Anda hanya menginginkan string kueri.
sumber
Bahasa Pemrograman: PHP
Ini berhasil untuk saya. Saya harap, ini juga akan membantu Anda :)
sumber
Untuk mendapatkan setiap simpul di URI, Anda dapat menggunakan fungsi
explode()
untuk $ _SERVER ['REQUEST_URI']. Jika Anda ingin mendapatkan string tanpa mengetahui apakah itu lulus atau tidak. Anda dapat menggunakan fungsi yang saya definisikan sendiri untuk mendapatkan parameter kueri dari $ _REQUEST (karena berfungsi baik untuk POST dan GET params).Mungkin ada beberapa kasus ketika kita ingin mendapatkan parameter kueri dikonversi menjadi tipe Integer, jadi saya menambahkan parameter ketiga ke fungsi ini.
sumber