การ แทนที่ข้อความ ip address ด้วย xxx

โค้ดสำหรับการแสดง IP Address ด้วยการบล๊อกตำแหน่งหลังของ IP เช่น

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);
?>

จากตัวอย่างด้านบน จะเห็นได้ว่า เราอาจมีหลายวิธีเพื่อที่จะได้ผลลัพท์ตามที่ต้องการได้ โดยที่ไม่จำเป็นต้องหาอะไรที่ซับซ้อนเลยครับ โดยอาจเลือกใช้วิธีใดที่เราถนัดมาประยุกต์ใช้ครับ
ผู้เขียน goragod โพสต์เมื่อ 15 ก.พ. 2552 เปิดดู 7,319 ป้ายกำกับ PHP
^