Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengeluarkan Rentetan Pertanyaan dengan Cekap daripada URL dalam PHP?

Bagaimanakah Saya Boleh Mengeluarkan Rentetan Pertanyaan dengan Cekap daripada URL dalam PHP?

DDD
DDDasal
2024-12-04 18:14:12186semak imbas

How Can I Efficiently Remove Query Strings from URLs in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn