⊗ppPmRgVA 258 of 447 menu

Lookahead ใน Regular Expressions PHP

บางครั้งจำเป็นต้องแก้ปัญหาประเภทนี้: หา สตริง 'aaa' และแทนที่ด้วย '!', แต่เฉพาะในกรณีที่หลัง 'aaa' มี 'x', โดยตัว 'x' เองนั้น ไม่ต้องแทนที่ หากเราพยายามแก้ปัญหาแบบ 'ตรงไปตรงมา' เราจะทำไม่ได้:

<?php preg_replace('#aaax#', '!', 'aaax'); // จะได้ '!' แต่ต้องการ '!x' ?>

สำหรับการแก้ปัญหา จำเป็นต้องมีวิธีบอกว่า 'x' ไม่ควรถูกแทนที่ ทำได้ โดยใช้วงเล็บพิเศษ (?= ), ซึ่งเพียงแค่ "มอง" แต่ไม่ดึงส่วนนั้นมาด้วย

วงเล็บเหล่านี้เรียกว่า Positive Lookahead (การมองไปข้างหน้าแบบมีเงื่อนไขบวก) Positive - เพราะ 'x' (ในกรณีของเรา) ต้องมี - เฉพาะตอนนั้น การแทนที่จึงจะเกิดขึ้น

ลองใช้วงเล็บเหล่านี้เพื่อแก้ปัญหา ของเราดู:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // คืนค่า '!x' ?>

นอกจากนี้ยังมี Negative Lookahead (การมองไปข้างหน้าแบบมีเงื่อนไขลบ) - (?! ) - มันบอกในทางกลับกัน ว่า บางสิ่งต้องไม่มี ในตัวอย่างต่อไปนี้ การแทนที่จะเกิดขึ้น เฉพาะเมื่อหลัง 'aaa' ไม่มี 'x':

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // คืนค่า '!b' ?>

กำหนดสตริงที่มีชื่อฟังก์ชัน:

<?php $str = 'func1() func2() func3()'; ?>

ให้รับอาร์เรย์ของชื่อฟังก์ชันจากสตริง

กำหนดสตริงที่มีแท็ก:

<?php $str = '<a href="" class="eee" id="zzz">'; ?>

ให้รับอาร์เรย์ของชื่อแอตทริบิวต์ของแท็กนี้

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ