GORAGOD.com

การแปลงลิงค์เพื่อส่งออกภายนอก

เราคงเคยเห็นตัวอย่างการบล๊อก URL ของอีเมล์ หรือ การทำลิงค์ เพื่อ redirect ออก นอกเว็บไซต์ โดยผ่าน URL ของเว็บเอง ตามเว็บไซต์ต่างๆ กันมาบ้างแล้ว หลักการของมันก็คือการแปลง URL ที่กรอกมาให้เป็น URL อื่นๆ ดังโค้ด
<?php
     $data =  '<a href="http://www.test.com">test</a>';
     $match = '/(<a.*?href=")(http:\/\/.*?)(".*?>.*?<\/a>)/e';
     $replace ='"\\1".changeURL("\\2")."\\3"';
     echo preg_replace($match, $replace, $data);

     function changeURL($url){
          return 'http://www.me.com/redirect.php?url='.rawurlencode($url);
     };
?>

ฟังก์ชั่น preg_replace จะทำการตรวจสอบว่าเป็น url โดยใช้ flag e เพื่อให้ประมวลผลฟังก์ชั่นได้
ฟังก์ชั่น changeURL จะทำหน้าที่ในการแปลง URL ให้มีรูปแบบตามที่ต้องการ