Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar alamat IP dan integer dalam php
Alamat IP ialah alamat protokol rangkaian yang biasa digunakan dalam Internet komputer Format biasa termasuk IPv4 dan IPv6 alamat IPv4 diwakili oleh empat nombor binari 8-bit antara 0 hingga 255 dipisahkan oleh ., sebagai contoh, 192.168.1.1. Dalam program, kadangkala perlu untuk menukar alamat IP kepada integer yang sepadan, atau untuk menukar integer kepada alamat IP yang sepadan Ini melibatkan penukaran antara alamat IP dan integer.
Dalam program PHP, kita boleh menggunakan beberapa fungsi terbina dalam untuk menukar antara alamat IP dan integer. Fungsi penukaran alamat IP PHP ialah ip2long(). Fungsi ini menerima parameter rentetan IPv4 dan mengembalikan integer tidak bertanda 32-bit yang sepadan. Jika alamat IPv4 yang diluluskan bukan alamat IPv4 yang sah, fungsi mengembalikan palsu. Contohnya, untuk menukar 192.168.1.1 kepada integer anda boleh menggunakan kod berikut:
$ip = '192.168.1.1'; $ip_long = ip2long($ip); echo $ip_long;
Outputnya ialah: -1062731775. Perlu diingat bahawa memandangkan PHP menggunakan perkataan mesin 32-bit, integer yang dikembalikan ditandatangani Jika anda memerlukan integer yang tidak ditandatangani, anda boleh menggunakan kod berikut:
$long = sprintf("%u", $ip_long); echo $long;
Hasil output ialah: 3232235775.
Jika anda perlu menukar integer kepada alamat IP yang sepadan, anda boleh menggunakan fungsi long2ip() PHP Fungsi ini menerima parameter integer tidak bertanda 32-bit dan mengembalikan rentetan alamat IPv4 yang sepadan. Contohnya, untuk menukar -1062731775 kepada alamat IP yang sepadan, anda boleh menggunakan kod berikut:
$ip_long = -1062731775; $ip = long2ip($ip_long); echo $ip;
Hasil output ialah: 192.168.1.1.
Perlu diambil perhatian bahawa parameter fungsi long2ip() mestilah integer tidak bertanda 32-bit Jika integer yang ditandatangani atau integer 64-bit dihantar, alamat IP yang dikembalikan oleh fungsi itu mungkin. salah. Jika anda perlu menukar integer yang ditandatangani kepada integer yang tidak ditandatangani, anda boleh menggunakan fungsi sprintf() PHP, yang boleh mengeluarkan rentetan dalam format yang ditentukan kepada pembolehubah, contohnya:
$long = sprintf("%u", $ip_long); $ip = long2ip($long); echo $ip;
Kod di atas akan melakukan Dengan betul menukar integer yang ditandatangani kepada integer yang tidak ditandatangani, dan kemudian menukar integer yang tidak ditandatangani kepada rentetan alamat IPv4 yang sepadan.
Ringkasnya, proses menukar alamat IP dan integer dalam program PHP adalah sangat mudah Anda hanya perlu menggunakan fungsi ip2long() dan long2ip() terbina dalam. Pada masa ini, alamat IPv6 juga telah digunakan secara meluas Jika anda perlu memproses alamat IPv6, anda boleh menggunakan fungsi inet_pton() dan inet_ntop() dalam PHP Kedua-dua fungsi ini boleh menukar alamat IPv6 kepada rentetan binari yang sepadan dan penukaran terbalik Memproses alamat IPv6 adalah lebih kompleks daripada alamat IPv4 dan memerlukan penggunaan perpustakaan sambungan atau menulis kod anda sendiri.
Atas ialah kandungan terperinci Bagaimana untuk menukar alamat IP dan integer dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!