ข้อยกเว้นภายในเซตใน Regular Expressions ใน PHP
คุณรู้แล้วว่าตัวอักขระพิเศษภายใน []
จะกลายเป็นตัวอักขระธรรมดา อย่างไรก็ตาม
มีข้อยกเว้น: หากคุณต้องการวงเล็บเหลี่ยม
ในฐานะตัวอักขระ คุณต้องทำการ Escape ด้วย
Backslash
ตัวอย่างเช่น ในโค้ดต่อไปนี้ แพตเทิร์นการค้นหา มีลักษณะดังนี้: ระหว่างตัว X มีวงเล็บเหลี่ยม:
<?php
$str = 'x]x xax x[x x1x';
$res = preg_replace('#x[\[\]]x#', '!', $str);
?>
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'! xax ! x1x'
กำหนดสตริง:
<?php
$str = 'x[]z x{}z x.z x()z';
?>
เขียน Regular Expression ที่จะค้นหาคำทั้งหมด
ตามแพตเทิร์น: ตัวอักษร 'x', ตามด้วยจำนวนเท่าใดก็ได้
ของวงเล็บชนิดใดก็ได้, ตามด้วยตัวอักษร 'z'
กำหนดสตริง:
<?php
$str = '[abc] {abc} abc (abc) [abc]';
?>
เขียน Regular Expression ที่จะค้นหาสตริง
ที่อยู่ภายในวงเล็บชนิดใดก็ได้และแทนที่ด้วย '!'