preg_match_all() เป็นฟังก์ชันในตัวใน PHP ที่ใช้จับคู่รูปแบบเฉพาะในสตริง คุณสามารถใช้ฟังก์ชันนี้เพื่อจับคู่นิพจน์ทั่วไปและแยกข้อมูลจากสตริง มันสามารถประหยัดเวลาและความพยายามในกรณีที่คุณต้องการค้นหารูปแบบที่เกิดขึ้นหลายครั้งและใช้กันอย่างแพร่หลายในการแยกวิเคราะห์ข้อความและแอปพลิเคชันการแยกข้อมูลของ PHP
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับการใช้ preg_match_all ใน PHP:
preg_match_all ( ลวดลาย , ป้อนข้อมูล , การแข่งขัน , ธง , ชดเชย )
เดอะ preg_match_all ยอมรับพารามิเตอร์ต่อไปนี้ สามตัวเป็นพารามิเตอร์บังคับ และสองตัวเป็นตัวเลือก:
- ลวดลาย : เป็นพารามิเตอร์บังคับ มันมีนิพจน์ทั่วไปที่ต้องค้นหา
- ป้อนข้อมูล : ตัวที่สองยังเป็นพารามิเตอร์บังคับ เนื่องจากเป็นสตริงที่ดำเนินการค้นหา
- การแข่งขัน : มันเก็บผลลัพธ์ในอาร์เรย์ที่มีการแข่งขันทั้งหมด
- ธง : อธิบายวิธีการค้นหาหรือจับคู่อาร์เรย์ที่มีโครงสร้าง มันแก้ไขลักษณะการทำงานของการค้นหาฟังก์ชัน สามารถใช้แฟล็กต่อไปนี้:
- ชดเชย : เป็นพารามิเตอร์ทางเลือกที่ระบุตำแหน่งเริ่มต้นของการค้นหา
ธง | คำอธิบาย |
---|---|
PREG_PATTERN_ORDER | อาร์เรย์ผลลัพธ์มีการจับคู่ทั้งหมดของอาร์เรย์สำหรับแต่ละองค์ประกอบของนิพจน์ทั่วไป |
PREG_SET_ORDER | องค์ประกอบของอาร์เรย์ที่ตรงกันแต่ละรายการมีรายการที่ตรงกันจากทุกการจัดกลุ่มสำหรับรายการที่ตรงกันที่พบของสตริง |
PREG_OFFSET_CAPTURE | โดยจะส่งคืนการจับคู่ที่มีตำแหน่งออฟเซ็ตไบต์ที่สอดคล้องกันในสตริงหัวเรื่อง |
PREG_UNMATCHED_AS_NULL | รูปแบบที่ไม่ตรงกันจะรายงานเป็น NULL |
ตัวอย่างที่ 1
พิจารณาตัวอย่างต่อไปนี้ของการใช้ preg_match_all() ฟังก์ชั่นใน PHP ในรหัสนี้ เรากำลังค้นหาคำว่า ลีนุกซ์ ในสตริง ฟังก์ชันนี้แสดงผลจำนวนที่ตรงกับคำที่พบ ลีนุกซ์ :
$string = 'สวัสดีผู้ที่ชื่นชอบ Linux ยินดีต้อนรับสู่ LinuxHint!' ;
รูปแบบ $ = '/ลินุกซ์/' ;
$ตรงกัน = อาร์เรย์ ( ) ;
preg_match_all ( รูปแบบ $ , $string , $ตรงกัน ) ;
พิมพ์_r ( $ตรงกัน [ 0 ] ) ;
?>
ตัวอย่างที่ 2
ในโค้ดตัวอย่างนี้ เรากำลังค้นหาคำว่า E ในสตริง i ขนาดเล็กใช้เพื่อทำให้การค้นหาไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ มันจะคืนค่าสตริงทั้งหมดของคำว่า E หรือ e:
$string = 'ยินดีต้อนรับสู่สหรัฐอเมริกา' ;
$patternRex = '/อี/ไอ' ;
$matchFound = preg_match_all ( $patternRex , $string , $ตรงกัน ) ;
ถ้า ( $matchFound ) {
เสียงสะท้อน '<ก่อน>' ;
พิมพ์_r ( $ตรงกัน ) ;
}
?>
ตัวอย่างที่ 3
หากไม่มีรูปแบบที่คุณกำลังค้นหาในสตริง ฟังก์ชันจะคืนค่าเป็นเท็จ ซึ่งแสดงว่ามีข้อผิดพลาด ในการจัดการสิ่งนี้ คุณสามารถใช้คำสั่ง if-else หากไม่พบรูปแบบ คุณสามารถพิมพ์ข้อความโดยใช้คำสั่ง else เพื่อแจ้งให้ผู้ใช้ทราบว่าไม่พบรูปแบบ
$string = 'PHP เป็นภาษาสคริปต์ยอดนิยม' ;
$patternRex = '/ฉี่/' ;
$matchFound = preg_match_all ( $patternRex , $string , $ตรงกัน ) ;
ถ้า ( $matchFound ) {
เสียงสะท้อน '<ก่อน>' ;
เสียงสะท้อน 'พบการจับคู่' ;
พิมพ์_r ( $ตรงกัน ) ;
} อื่น {
เสียงสะท้อน 'ไม่พบการแข่งขัน' ;
}
?>
บันทึก : เดอะ <ก่อน> แท็กในโค้ดด้านบนใช้เพื่อจัดรูปแบบเอาต์พุต
บรรทัดล่าง
Regular Expression เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการค้นหาและจัดการข้อความใน PHP เดอะ preg_match_all() ฟังก์ชันเป็นฟังก์ชันในตัวของ PHP ที่ใช้ในการจับคู่นิพจน์ทั่วไปกับสตริงและดึงข้อมูลที่เกิดขึ้นทั้งหมดของรูปแบบ และหากรูปแบบนั้นไม่มีอยู่ ก็จะส่งค่ากลับเป็นเท็จ ทำความเข้าใจกับ preg_match_all() จะช่วยให้ผู้ใช้สามารถจัดการและประมวลผลข้อมูลข้อความใน PHP ได้ดีขึ้น