PHP Replace Function
1. str_replace()Replace all occurrences of the search string with the replacement string2. substr_replace()
Replace text within a portion of a string
3. strtr()
Translate characters or replace substrings
4. preg_replace()
Perform a regular expression search and replace
แต่ละฟังก์ชั่นแตกต่างกันอย่างไร
เริ่มจาก =>
1. str_replace()
เรามักจะคุ้นเคยกับการใช้เพื่อแทนที่คำบางคำให้เป็นคำอื่น เช่น
echo str_replace("ผศ.ดร.", "", "ผศ.ดร.สมบูรณ์ ใจดี");ก็จะได้ผลลัพธ์ที่แทนที่ ผศ.ดร. เป็นค่าว่าง = สมบูรณ์ ใจดี
หรือ ใช้ตัดเครื่องหมายคอมม่าในตัวเลขออกไป
echo str_replace(",", "", "1,234,654.00");ก็จะได้แต่ตัวเลข 1234654.00 เพื่อเอาไปบันทึกในฐานข้อมูล
นอกจากนี้ยังสามารถนำไปใช้แทนที่คำหยาบได้ด้วย ยกตัวอย่าง
$rough = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$content = str_replace($rough, "*", "Hello World of PHP");
echo $content;
ข้อความในตัวแปรอาร์เรย์ $rough จะแทนที่ด้วยเครื่องหมาย *
H*ll* W*rld *f PHP---------------------------
ในส่วนของการแทนที่หลายคำด้วย Array นั้นแนะนำให้ใช้ strtr() จะอ่านง่ายกว่า
$phrase = "You should eat fruits, vegetables, and fiber every day.";---------------------------
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
2. substr_replace()
ฟังก์ชั่นนี้ยังไม่เคยใช้งาน เพราะนึกไม่ออกว่าจะใช้ในกรณีไหน และการนำไปใช้เราต้องรู้ตำแหน่งที่ต้องการแทนที่อยู่แล้วด้วย ซึ่งอาจจะต้องใช้ฟังก์ชั่นค้นหาคำเพิ่มเติม
substr_replace (
ข้อความ
, คำที่ใช้แทนที่
, ระบุตำแหน่งเริ่มต้น
[, ระบุความยาวที่จะแทนที่
] )เท่าที่พอจะคิดออกก็คือ เอามาเติมเต็มฟังก์ชั่น substr() เพราะว่าชื่อก็บ่งบอกอยู่แล้ว แต่จะใช้ตอนไหน ก็คือ substr() จะใช้ตัดข้อความแบบระบบตำแหน่ง เช่น AABBCC เราสามารถตัดเฉพาะ AA โดยระบุตำแหน่งได้ หรือ ตัด CC แบบระบุตำแหน่งย้อนหลัง -2 หรือจะตัดแค่ตรงกลาง BB ก็ได้
แต่ที่ทำไม่ได้คือ ถ้าต้องการ 2 สองส่วน คือ AACC เราจะตัดด้วย substr() ถึง 2 ครั้งด้วยกัน แต่ถ้าใช้ substr_replace() จะใช้แค่ครั้งเดียว ก็ประหยัดเวลาไปได้
---------------------------
กรณีที่ AABBCC เรารู้อยู่แล้ว่า ค่าตรงกลางคือ BB ไม่เปลี่ยนแปลง
เราจะใช้ str_replace('BB', '', 'AABBCC') ไปเลยก็ได้ แต่!!! ถ้าตำแหน่งที่ 3-4 เป็นข้อความที่เปลี่ยนแปลงไม่ซ้ำกัน แต่มีตำแหน่งที่แน่นอน การใช้ substr_replace() จึงเป็นวิธีที่สะดวกที่สุด
---------------------------
3. strtr()
เหมือนกับใช้แปลงคำ หรือแปลความหมายก็ได้
strtr ( ข้อความต้นฉบับ ,
คำค้นหา
, คำแทนที่
)หรือจะใช้แทนที่แบบอาร์เรย์ก็ได้
strtr ( ข้อความต้นฉบับ ,
อาร์เรย์สำหรับ
แทนที่
)ตัวอย่างการใช้งาน
<?php
$trans = array("Hello" => "สวัสดี", 'Everybody' => 'ทุกคน');
echo strtr("Hello Everybody", $trans);
?>
ผลลัพธ์ที่ได้
สวัสดี ทุกคน
4. preg_replace()
preg_replace (
รูปแบบการค้นหา
, คำแทนที่ , ข้อความ
)จะเป็นการแทนที่แบบกำหนดรูปแบบได้ ซึ่งจะต้องศึกษา Regular Expressions เพิ่มเติม
ตัวอย่างการใช้แทนที่ URL ให้กลายเป็นลิงค์คลิกได้
<?php
$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
$inp = "Harry you're a http://google.com wizard!";
$text = preg_replace($pattern, "<a href='$1'>$1</a>", $inp);
echo $text;
?>
อ้างอิง
PHP preg_replace - www or http://
https://stackoverflow.com/questions/6165552/php-preg-replace-www-or-http
ความคิดเห็น
แสดงความคิดเห็น