PHP กับการแทนที่ข้อความ มาดูกันว่ามีฟังก์ชั่นอะไรให้ใช้บ้าง

โดย CyberMAN

PHP Replace Function

1. str_replace()Replace all occurrences of the search string with the replacement string

2. substr_replace()
Replace text within a portion of a string

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




PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/