⊗ppPmRgESCh 226 of 447 menu

การหนีอักขระพิเศษใน Regular Expressions ของ PHP

สมมติว่าเราต้องการทำให้ อักขระพิเศษหมายถึงตัวมันเอง สำหรับสิ่งนี้ จำเป็นต้องหนีมันโดยใช้แบ็กสแลช ลองดูตัวอย่าง

ตัวอย่าง

ในตัวอย่างต่อไปนี้ ผู้เขียน regex ต้องการ ให้รูปแบบการค้นหาดูเหมือนว่า: ตัวอักษร 'a' ตามด้วยเครื่องหมายบวก '+' ตามด้วย ตัวอักษร 'x' อย่างไรก็ตาม ผู้เขียนโค้ด ไม่ได้หนีอักขระ '+' ดังนั้น รูปแบบการค้นหาจริง ๆ แล้วดูเหมือนว่า: ตัวอักษร 'a' หนึ่งครั้งหรือมากกว่า หลังจากนั้น ตัวอักษร 'x':

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a+x#', '!', $str); ?>

ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:

'a+x ! ! !'

ตัวอย่าง

และตอนนี้ผู้เขียนได้หนีเครื่องหมายบวกด้วยแบ็กสแลช ตอนนี้รูปแบบการค้นหาก็เป็นไปตามที่ต้องการ: ตัวอักษร 'a' ตามด้วยเครื่องหมายบวก '+' ตามด้วยตัวอักษร 'x'

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a\+x#', '!', $str); ?>

ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:

'! ax aax aaax'

ตัวอย่าง

ในตัวอย่างนี้ รูปแบบดูเหมือนว่า: ตัวอักษร 'a' ตามด้วยจุด '.' ตามด้วย ตัวอักษร 'x':

<?php $str = 'a.x abx azx'; $res = preg_replace('#a\.x#', '!', $str); ?>

ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:

'! abx azx'

ตัวอย่าง

ในตัวอย่างต่อไปนี้ ผู้เขียนลืมหนี สแลช และ regex จับคู่สตริงย่อยทั้งหมด เพราะจุดที่ไม่ได้หนีหมายถึง อักขระใดๆ:

<?php $str = 'a.x abx azx'; $res = preg_replace('#a.x#', '!', $str); ?>

ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:

'! ! !'

ตัวอย่าง

โปรดสังเกตว่าหากคุณลืม แบ็กสแลชสำหรับจุด (เมื่อมันควร หมายถึงตัวมันเอง) - สิ่งนี้อาจ มองไม่เห็น:

<?php preg_replace('#a.x#', '!', 'a.x'); // จะคืนค่า '!' ตามที่เราต้องการ ?>

มองเห็นด้วยตาว่าทำงานถูกต้อง (เนื่องจากจุด หมายถึงอักขระใดๆ รวมถึงจุดธรรมดา '.') แต่หากเปลี่ยนสตริง ที่ทำการแทนที่ - เราจะเห็น ข้อผิดพลาดของเรา:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // จะคืนค่า '! ! !' ในขณะที่คาดหวัง '! abx azx' ?>
ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ