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 ที่รองรับทั้งภาษาไทยและภาษาอังกฤษ โดยใช้คำสังดังนี้
วิธีใช้งาน เช่น
ลองRUNดูผลลัพธุ์เอาเองนะครับ รับรองว่า แจ่ม!!!!
ปล.ถ้าไม่ใส่ http:// link จะไม่แสดงนะครับ
เรื่องของเรื่องคือ ผมทำเว็บอยู่เว็บนึง โดยให้ลูกค้ากรอกรายละเอียด ซึ่งในรายละเอียดลูกค้าอาจนำ 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 จะไม่แสดงนะครับ
ความคิดเห็น
แสดงความคิดเห็น