คำสั่ง 'หรือ' ในนิพจน์ทั่วไปของ PHP
ในบทเรียนนี้เราจะวิเคราะห์คำสั่ง
| ซึ่งเป็นตัวเลือก
หรือ ที่ทรงพลังกว่าการใช้
คำสั่ง [] คำสั่งนี้ช่วยให้
สามารถแบ่งนิพจน์ทั่วไปออกเป็นหลายส่วนได้
โดยที่สิ่งที่ค้นหาอาจตรงกับส่วนหนึ่ง
ของนิพจน์ทั่วไป หรืออีกส่วนหนึ่ง ลองดูตัวอย่างกัน
ตัวอย่าง
ในตัวอย่างนี้ รูปแบบการค้นหาคือ: ตัวอักษร
'a' สามตัว หรือตัวอักษร 'b' สามตัว:
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'! ! abb'
ตัวอย่าง
ในตัวอย่างนี้ รูปแบบการค้นหาคือ: ตัวอักษร
'a' สามตัว หรือตัวอักษร 'b'
ตั้งแต่ 1 ตัวขึ้นไป:
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'! ! ! ! axx'
ตัวอย่าง
ในตัวอย่างนี้ รูปแบบการค้นหาคือ: ตัวอักษร หนึ่งตัวหรือมากกว่า หรือตัวเลขสามตัว:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'! ! ! 1 12 !'
ตัวอย่าง
สัญลักษณ์แนวตั้งสามารถแบ่งนิพจน์ทั่วไป ไม่ได้แค่เป็นสองส่วน แต่เป็นกี่ส่วนก็ได้:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'! ! ! ddd'
ตัวอย่าง
หากสัญลักษณ์แนวตั้งอยู่ภายในวงเล็บ
คำว่า 'หรือ' จะทำงานเฉพาะภายใน
วงเล็บนั้นเท่านั้น ตัวอย่าง ลองค้นหา string
ตามรูปแบบต่อไปนี้: ที่ต้น string เป็น
'a' หรือ 'b' หนึ่งครั้งหรือมากกว่า
จากนั้นตามด้วยตัวอักษร 'x' สองตัว:
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'! ! ! exx'
โจทย์ฝึกปฏิบัติ
กำหนด string:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
เขียนนิพจน์ทั่วไปที่ค้นพบ string
ตามรูปแบบ: ที่ขอบเป็นตัวอักษร 'a',
และระหว่างนั้น - เป็นตัวอักษร 'e' จำนวนเท่าใดก็ได้ หรือตัวอักษร 'x' จำนวนเท่าใดก็ได้
กำหนด string:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
เขียนนิพจน์ทั่วไปที่ค้นพบ string
ตามรูปแบบ: ที่ขอบเป็นตัวอักษร 'a',
และระหว่างนั้น - เป็นตัวอักษร 'e' สองครั้ง หรือตัวอักษร 'x' จำนวนเท่าใดก็ได้