การ แทนที่ข้อความ ip address ด้วย xxx
โค้ดสำหรับการแสดง IP Address ด้วยการบล๊อกตำแหน่งหลังของ IP เช่น
IP 127.0.0.1 แสดงผลเป็น 127.0.xxx.xxx (หลักหลังคงที่)
หรือ
IP 111.222.11.33 แสดงผลเป็น 111.222.xx.xx (หลักหลังตามหลักหน้า)
ซึ่งสามารถทำได้หลายวิธี ลองเลือกไปใช้สักวิธีดูนะครับ
จากตัวอย่างด้านบน จะเห็นได้ว่า เราอาจมีหลายวิธีเพื่อที่จะได้ผลลัพท์ตามที่ต้องการได้ โดยที่ไม่จำเป็นต้องหาอะไรที่ซับซ้อนเลยครับ โดยอาจเลือกใช้วิธีใดที่เราถนัดมาประยุกต์ใช้ครับ
IP 127.0.0.1 แสดงผลเป็น 127.0.xxx.xxx (หลักหลังคงที่)
หรือ
IP 111.222.11.33 แสดงผลเป็น 111.222.xx.xx (หลักหลังตามหลักหน้า)
ซึ่งสามารถทำได้หลายวิธี ลองเลือกไปใช้สักวิธีดูนะครับ
<?php
$ip1 = '127.0.0.1';
$ip2 = '111.222.11.33';
// แบบที่ 1 ใช้ explode
list($a, $b, $c, $d) = explode('.', $ip1); // แยก IP ออกเป็นตำแหน่งต่างๆ
echo "$a.$b.xxx.xxx"; // ผลลัพท์สามารถเลือกได้ว่าจะบล๊อกตำแหน่งไหนบ้าง
echo '<br />';
// แบบที่ 2 ใช้ preg_replace แบ่งออกเป็น 2 กลุ่มโดยแทนที่กลุ่มหลังด้วย xxx.xxx
echo preg_replace('/([0-9]+\.[0-9]+)\.[0-9]+\.[0-9]+/', '<span style="color:red">.xxx.xxx</span>', $ip2);
// แบบที่ 3 ใช้ preg_replace แทนที่รายการที่ block ทีละตัวตามตำแหน่งของมัน
function bockipstr( $ip ) {
preg_match('/([0-9]+\.[0-9]+\.)([0-9\.]+)/', $ip, $ips); // แยกออกเป็น 2 กลุ่ม คือ 2 หลักหน้า และ 2 หลักหลัง
return $ips[1].preg_replace('/[0-9]/','<span style="color:red">x</span>',$ips[2]); // แทนที่ตัวเลขหลักหลังด้วย x ทีละตัว
}
echo '<br />';
echo "$ip1 = ".bockipstr($ip1);
echo '<br />';
echo "$ip2 = ".bockipstr($ip2);
?>
จากตัวอย่างด้านบน จะเห็นได้ว่า เราอาจมีหลายวิธีเพื่อที่จะได้ผลลัพท์ตามที่ต้องการได้ โดยที่ไม่จำเป็นต้องหาอะไรที่ซับซ้อนเลยครับ โดยอาจเลือกใช้วิธีใดที่เราถนัดมาประยุกต์ใช้ครับ