วันจันทร์ที่ 22 กันยายน พ.ศ. 2557

PHP การใช้ Regex แทนที่ link ให้กับข้อความที่เป็น URL

บทความนี้ไม่ได้เรียกว่าสอนครับ แค่อยากนำโค๊ดPHPจากเว็บต่างประเทศมาดัดแปลงให้รองรับ URL ภาษาไทย มาแจกเท่านั้น
    เรื่องของเรื่องคือ ผมทำเว็บอยู่เว็บนึง โดยให้ลูกค้ากรอกรายละเอียด ซึ่งในรายละเอียดลูกค้าอาจนำ URL มาใส่เช่น http://www.lazada.co.th แต่ผมอยากให้มันสามารถคลิกที่ URL แล้ว link ไปที่เว็บนั้นๆเลย ด้วยความขี้เกียจก็เลยลองเสิร์ทดูวิธีทำ ก็เจอเว็บนี้ครับ http://snipplr.com/view.php?codeview&id=36992
     โค๊ดค่อนข้างสมบูรณ์ แต่รองรับเฉพาะภาษาอังกฤษ ไม่รองรับชื่อ โดเมน หรือ URL ภาษาไทย และผมเองก็พอมีความรู้เรื่องของ Regular Expression (Regex) อยู่บ้าง ก็เลยนำมาดัดแปลงนิดหน่อย ก็เลยได้ URL ที่รองรับทั้งภาษาไทยและภาษาอังกฤษ โดยใช้คำสังดังนี้

function link($text) {
    return preg_replace('@((https?://)+([-\w]+\.[-\w\.]*[ก-๙]*)+\w(:\d+)?(/([-\w/_\.]*[ก-๙]*(\?\S+)?)?)*)@', '<a href="$1" target="_blank">$1</a>', $text);
}

วิธีใช้งาน เช่น

 <?php
       $txt='http://lazada.co.th,http://รับทำเว็บ.com/ราคา';
       echo link($txt);
?>

ลองRUNดูผลลัพธุ์เอาเองนะครับ รับรองว่า แจ่ม!!!!
ปล.ถ้าไม่ใส่ http:// link จะไม่แสดงนะครับ

ไม่มีความคิดเห็น :

แสดงความคิดเห็น