Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengeluarkan Rentetan Pertanyaan dengan Cekap daripada URL dalam PHP?
Mendapatkan URL Tanpa Rentetan Pertanyaan
Apabila membina URL untuk halaman semasa menggunakan PHP, anda mungkin menghadapi keadaan di mana URL yang diminta termasuk rentetan pertanyaan, seperti:
www.example.com/myurl.html?unwantedthngs
Untuk mengalih keluar rentetan pertanyaan dan mendapatkan URL yang bersih seperti:
www.example.com/myurl.html
anda boleh memanfaatkan fungsi strtok serba boleh.
$url = strtok($_SERVER["REQUEST_URI"], '?');
strtok() menyediakan kaedah mudah untuk mengekstrak bahagian URL sebelum kejadian pertama ? watak. Berbeza dengan explode(), yang memerlukan mencipta tatasusunan dengan maksimum dua elemen dan kemudian mengekstrak elemen pertama, strtok() ialah pendekatan yang lebih langsung.
Menggunakan kaedah lain, seperti strstr() atau substr(), boleh mengakibatkan tingkah laku yang tidak menentu, terutamanya apabila rentetan pertanyaan tiada atau mengandungi berbilang parameter pertanyaan. Untuk menggambarkan keberkesanan strtok(), pertimbangkan demonstrasi berikut:
$urls = [ 'www.example.com/myurl.html?unwantedthngs#hastag', 'www.example.com/myurl.html' ]; foreach ($urls as $url) { var_export(['strtok: ', strtok($url, '?')]); echo "\n"; var_export(['strstr/true: ', strstr($url, '?', true)]); // unreliable echo "\n"; var_export(['explode/2: ', explode('?', $url, 2)[0]]); // limit stops after first encounter echo "\n"; var_export(['substr/strrpos: ', substr($url, 0, strrpos( $url, "?"))]); // unreliable echo "\n---\n"; }
Output:
array ( 0 => 'strtok: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'strstr/true: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'explode/2: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'substr/strrpos: ', 1 => 'www.example.com/myurl.html', ) --- array ( 0 => 'strtok: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'strstr/true: ', 1 => false, // unreliable ) array ( 0 => 'explode/2: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'substr/strrpos: ', 1 => '', // unreliable ) ---
Seperti yang dilihat dalam output, strtok secara konsisten mengembalikan URL yang dikehendaki tanpa rentetan pertanyaan, tidak kira sama ada rentetan pertanyaan ada atau kosong. Dengan menggunakan strtok(), anda boleh mengekstrak URL bersih dengan berkesan dan boleh dipercayai daripada sebarang permintaan yang diberikan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Rentetan Pertanyaan dengan Cekap daripada URL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!