Rumah >pembangunan bahagian belakang >tutorial php >Cara mengesahkan format alamat URL dengan ungkapan biasa PHP

Cara mengesahkan format alamat URL dengan ungkapan biasa PHP

王林
王林asal
2023-06-24 09:51:072281semak imbas

Dengan perkembangan pesat Internet, alamat URL telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian orang ramai. Dalam pembangunan web, untuk memastikan alamat URL yang dimasukkan oleh pengguna boleh dikenali dan digunakan dengan betul oleh sistem, kami perlu melakukan pengesahan format padanya. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengesahkan format alamat URL.

1. Komponen asas alamat URL

Sebelum memahami cara mengesahkan format alamat URL, kita perlu memahami komponen asas alamat URL terlebih dahulu. Biasanya, alamat URL standard terdiri daripada bahagian berikut:

1 Bahagian protokol komunikasi (protokol): Menentukan protokol untuk komunikasi antara klien dan pelayan termasuk protokol http dan https.

2. Bahagian hos (hos): Tentukan nama hos atau alamat IP pelayan yang hendak disambungkan.

3. Bahagian nombor port (port): Tentukan nombor port yang digunakan oleh pelayan untuk disambungkan, yang biasanya merupakan nilai lalai yang ditentukan oleh nama hos dan protokol.

4. Bahagian laluan (laluan): Tentukan laluan ke halaman atau fail tertentu pada pelayan.

5. Bahagian rentetan pertanyaan (rentetan pertanyaan): Parameter tambahan yang dihantar oleh klien ke pelayan.

6. Bahagian pengecam serpihan (pengecam serpihan): Tentukan lokasi dalam sumber.

2. PHP menggunakan ungkapan biasa untuk mengesahkan format alamat URL

Dalam PHP, anda boleh mengesahkan format alamat URL dengan mudah dengan menggunakan fungsi preg_match dengan ungkapan biasa.

1 Sahkan protokol komunikasi

Gunakan ungkapan biasa /^https?:/// untuk mengesahkan sama ada protokol komunikasi alamat URL itu sah. Antaranya, ^ sepadan dengan permulaan rentetan, https bermakna memilih salah satu protokol http atau https, dan // bermaksud memadankan aksara "//".

Kod contoh:

$url = "http://www.example.com";
if(preg_match('/^https?:///', $url)){
    echo "通讯协议合法";
} else {
    echo "通讯协议不合法";
}

2 Sahkan nama hos

Gunakan ungkapan biasa /^[A-Za-z0-9.-]+.[A-Za -z ]{2,}$/ boleh mengesahkan sama ada nama hos alamat URL itu sah. Antaranya [A-Za-z0-9.-] bermaksud nama hos boleh mengandungi huruf, nombor, sempang dan noktah, + bermakna padanan satu atau lebih masa, .[A-Za-z]{2,}$ Menunjukkan bahawa ia sepadan dengan tempoh diikuti dengan rentetan sekurang-kurangnya dua huruf, dan rentetan itu mestilah penghujung alamat URL.

Kod contoh:

$url = "http://www.example.com";
if(preg_match('/^[A-Za-z0-9.-]+.[A-Za-z]{2,}$/', parse_url($url, PHP_URL_HOST))){
    echo "主机名合法";
} else {
    echo "主机名不合法";
}

3 Sahkan nombor port

Gunakan ungkapan biasa /:d+$/ untuk mengesahkan sama ada nombor port alamat URL itu sah. Antaranya: bermaksud memadankan aksara bertindih, d+ bermaksud memadankan satu atau lebih digit, dan nombor itu mestilah penghujung alamat URL.

Kod contoh:

$url = "http://www.example.com:8888";
if(preg_match('/:d+$/', parse_url($url, PHP_URL_PORT))){
    echo "端口号合法";
} else {
    echo "端口号不合法";
}

4 Laluan pengesahan

Gunakan ungkapan biasa /^[/w.-]+$/ untuk mengesahkan sama ada laluan alamat URL adalah sah. Antaranya, ^ sepadan dengan permulaan rentetan, [/w.-]+ bermakna laluan boleh mengandungi garis miring, huruf, nombor, garis bawah dan noktah serta sepadan dengan sekurang-kurangnya satu aksara dan $ bermakna sepadan dengan penghujung rentetan. .

Kod contoh:

$url = "http://www.example.com/path/to/page.html";
if(preg_match('/^[/w.-]+$/', parse_url($url, PHP_URL_PATH))){
    echo "路径合法";
} else {
    echo "路径不合法";
}

5 Sahkan rentetan pertanyaan

Gunakan ungkapan biasa /^?.+$/ untuk mengesahkan sama ada rentetan pertanyaan alamat URL adalah sah. . Antaranya, ^ sepadan dengan permulaan rentetan, ? bermaksud memadankan aksara tanda soal, .+ bermaksud memadankan sekurang-kurangnya satu aksara, dan $ bermaksud memadankan hujung rentetan.

Kod contoh:

$url = "http://www.example.com/path/to/page.html?param=value";
if(preg_match('/^?.+$/', parse_url($url, PHP_URL_QUERY))){
    echo "查询字符串合法";
} else {
    echo "查询字符串不合法";
}

6 Sahkan format lengkap alamat URL

Dengan lima ungkapan biasa di atas, kami boleh mengesahkan sama ada setiap bahagian alamat URL adalah. sah satu persatu. Tetapi pendekatan yang lebih biasa ialah menggabungkannya untuk mengesahkan bahawa format lengkap keseluruhan alamat URL adalah sah.

Sebagai contoh, ungkapan biasa berikut boleh mengesahkan sama ada format lengkap alamat URL adalah sah:

/^https?://[A-Za-z0-9.-]+.[A-Za-z]{2,}(:d+)?(/[w.-]*)*(?.*)?$/i

di mana saya bermaksud tidak peka huruf besar-besaran. Ungkapan biasa ini mengandungi berbilang subungkapan, yang digunakan untuk mengesahkan sama ada protokol komunikasi, nama hos, nombor port, laluan dan rentetan pertanyaan adalah sah.

Kod sampel:

$url = "http://www.example.com/path/to/page.html?param=value";
if(preg_match('/^https?://[A-Za-z0-9.-]+.[A-Za-z]{2,}(:d+)?(/[w.-]*)*(?.*)?$/i', $url)){
    echo "URL地址合法";
} else {
    echo "URL地址不合法";
}

Ringkasan:

Artikel ini menerangkan cara menggunakan ungkapan biasa PHP untuk mengesahkan format alamat URL. Dengan mengesahkan sama ada protokol komunikasi, nama hos, nombor port, laluan dan rentetan pertanyaan adalah sah, kami boleh mengesan kesahihan alamat URL dengan cepat dan memastikan sistem boleh menggunakan alamat URL yang dimasukkan oleh pengguna dengan betul.

Atas ialah kandungan terperinci Cara mengesahkan format alamat URL dengan ungkapan biasa 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