StepCoding

ฟังก์ชัน Replacing

อ่าน [912] หมวดหมู่: POSIX Regular Expression

ฟังก์ชันในการแทนที่คำที่ match กับ pattern ที่ระบุไว้นั้นก็คือ ฟังก์ชัน ereg_replace() ซึ่งมีรูปแบบการใช้งานดังนี้

# รูปแบบ
$changedStr = ereg_replace(pattern, replacement, string);
โดยที่
	$changedStr คือ ตัวแปรที่เก็บค่าข้อความที่ได้จากการแทนที่แล้ว
	pattern คือ regular expression ที่ใช้กำหนดในการค้นหา
	replacement คือ ข้อความที่ต้องการแทนที่คำที่ match กับรูปแบบที่กำหนด
	string คือ ข้อความที่ใช้ในการค้นหาและแทนที่

ถ้า pattern ที่กำหนดนั้น ๆ เป็นรูปแบบ subpattern ถ้าข้อความที่ต้องการแทนที่นั้น ๆ match กับ subpattern ใด ๆ ข้อความที่อยู่ใน subpattern นั้น ๆ จะถูกเก็บไว้ในอักขระ \1 จนถึง \9 เช่นการใช้ฟังก์ชัน ereg_replace() ในการแทนที่ [b] และ [/b] ด้วยแท็ก HTML ดังนี้

<?php
$string = "[b]PHP[/b] Programming";
echo ereg_replace('\[b]([^[]*)\[/b]', '<b>\1</b>', $string);
// <b>PHP</b> Programming
?>

จากตัวอย่างจะเห็นว่าส่วนที่เป็น subpattern นั้นก็คือส่วนที่อยู่ระหว่าง [b] และ [/b] ซึ่งถ้ามัน match กับส่วนใดในข้อความ string มันก็จะถูกเก็บไว้ในอักขระ \1 แต่ถ้ามี subpattern หลาย ๆ อันมันก็จะถูกเก็บไว้ในอักขระ \1, \2 จนถึง \9

ฟังก์ชัน ereg_replace() จะทำการค้นหา pattern แบบ case-sensitive เช่นกัน ดังนั้นถ้าเราต้องการค้นหาแบบ case-insensitive ให้ใช้ฟังก์ชัน eregi_replace() แทน ซึ่งมีการใช้งานเหมือนกัน

ผู้สนับสนุน