Untuk pembangun web, mereka selalunya perlu mengendalikan URL Salah satu operasi biasa ialah mengalih keluar parameter tertentu dalam URL. Operasi ini kelihatan mudah, tetapi terdapat banyak aspek yang perlu dipertimbangkan semasa melaksanakannya. Artikel ini akan memperkenalkan secara terperinci cara mengalih keluar parameter dalam URL dalam PHP.
Struktur URL
Sebelum memahami pengalihan keluar parameter URL, kita perlu memahami struktur URL terlebih dahulu. URL standard biasanya terdiri daripada bahagian berikut:
scheme://host:port/path?query#fragment
Antaranya, skema mewakili protokol, seperti http, https, ftp, dsb. mewakili nama hos; laluan mewakili laluan fail; pertanyaan mewakili parameter;
Struktur parameter
Dalam URL, parameter biasanya muncul dalam bentuk key=value dan berbilang parameter dipisahkan oleh & simbol. Contohnya:
http://example.com/path?param1=value1¶m2=value2
URL di atas mengandungi dua parameter: param1 dan param2.
Pelaksanaan mengalih keluar parameter URL
Setelah mengetahui struktur URL dan struktur parameter, kita boleh mula melaksanakan fungsi mengalih keluar parameter URL.
Pertama, kita perlu mendapatkan URL semasa. Anda boleh menggunakan pembolehubah $_SERVER['REQUEST_URI'] untuk mendapatkan:
$url = $_SERVER['REQUEST_URI'];
Kemudian, kita perlu menghuraikan parameter dalam URL. Anda boleh menggunakan fungsi parse_str untuk menghuraikan rentetan pertanyaan ke dalam tatasusunan bersekutu:
parse_str(parse_url($url, PHP_URL_QUERY), $params);
Di sini, kami menggunakan fungsi parse_url untuk mendapatkan bahagian pertanyaan, dan kemudian menggunakan parse_str untuk menghuraikan rentetan menjadi tatasusunan bersekutu .
Seterusnya, kita boleh menggunakan fungsi unset untuk memadam parameter yang ditentukan daripada tatasusunan:
unset($params['param1']);
Di sini, kami mengambil param1 sebagai contoh untuk memadamkannya daripada tatasusunan $params. Jika anda ingin memadamkan parameter lain, anda hanya perlu menghantar nama kunci yang sepadan ke dalam fungsi yang tidak ditetapkan.
Akhir sekali, kita perlu membina semula tatasusunan $params yang diubah suai menjadi rentetan pertanyaan baharu dan menyambungkannya ke dalam URL. Anda boleh menggunakan fungsi http_build_query untuk menukar tatasusunan bersekutu kepada rentetan pertanyaan:
$query = http_build_query($params); $url = str_replace('?'.$_SERVER['QUERY_STRING'], '', $url); $url .= (!empty($query) ? '?' . $query : '');
Di sini, kami menggunakan fungsi str_replace untuk menggantikan rentetan pertanyaan dalam URL asal dengan rentetan kosong, dan kemudian menggantikan rentetan pertanyaan baharu dengan Rentetan dilampirkan pada penghujung URL.
Pelaksanaan kod lengkap
Berikut ialah pelaksanaan kod lengkap:
$url = $_SERVER['REQUEST_URI']; parse_str(parse_url($url, PHP_URL_QUERY), $params); unset($params['param1']); $query = http_build_query($params); $url = str_replace('?'.$_SERVER['QUERY_STRING'], '', $url); $url .= (!empty($query) ? '?' . $query : '');
Nota
Walaupun kod di atas boleh mencapai fungsi mengalih keluar parameter URL, dalam pembangunan sebenar, anda perlu memberi perhatian kepada perkara berikut.
Pertama sekali, berbilang parameter perlu dipertimbangkan. Jika anda ingin memadamkan berbilang parameter, anda boleh menggunakan fungsi unset untuk memadam beberapa kali.
Kedua, anda perlu memberi perhatian kepada pelarian parameter URL. Jika parameter mengandungi aksara khas, seperti ruang, &, =, dsb., pengekodan urlencode mungkin diperlukan.
Akhir sekali, anda perlu mempertimbangkan kewujudan titik utama dalam URL. Jika terdapat simbol # dalam URL, anda perlu memotong bahagian sauh dahulu, padamkan parameter, dan kemudian sambungkan sauh semula.
Ringkasan
Dalam PHP, mengalih keluar parameter URL ialah operasi biasa. Kita boleh mencapai fungsi ini dengan menghuraikan URL, memadam parameter dan membina semula URL. Sudah tentu, dalam pembangunan sebenar, isu-isu seperti parameter melarikan diri, berbilang parameter, titik penambat, dll. juga perlu dipertimbangkan.
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar parameter daripada URL dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!