วิธีอื่น ๆ ที่ควรเพิ่มในหนังสือเคล็ดลับ RegEx :
ก่อนอื่นคุณสามารถบีบอัด RegEx ของคุณไปที่: /(<br\s*/?>)+/i
และแทนที่ด้วย<br />
(ไม่ต้องเป็นภาระ RegExP ด้วย lookaheads) และคุณจะต้องจบลงด้วยตัวแบ่งบรรทัด XHMTL ที่คุณเลือก
วิธีอื่น ๆ ในการปรับเปลี่ยน RegEx ของคุณดังนั้นมันจะไม่*/
แสดงความคิดเห็น?>
สิ้นสุดหรือสคริปต์สิ้นสุด:
- ใช้ปริมาณที่เป็นเจ้าของ :
#(<br\s*+/?+>)+#i
- ซึ่งโดยทั่วไปมีความหมายสำหรับ\s*+
ถ้าคุณพบว่าช่องว่างตรงกับมากที่สุดเท่าที่มีและเก็บไว้และสำหรับ/?+
ถ้าคุณพบเฉือนเก็บไว้!
- ใส่
\s*
และ/*
ในกลุ่มการจับ =>#(<br(\s*)(/?)>)+#i
การสาธิตสด: http://codepad.viper-7.com/YjqUbi
และเนื่องจากเราโน้มตัวไปทางพฤติกรรมที่เป็นเจ้าของ RegEx ที่เร็วที่สุดที่ยังเลี่ยงปัญหาการแสดงความคิดเห็นก็คือ: อธิบายการสาธิต#(<br\s*+/?+>)++#i
สำหรับการแสดงความคิดเห็นในสถานการณ์ที่ยุ่งยาก
เมื่อคุณไม่สามารถเปลี่ยนรหัสหรือใช้ความคิดเห็นหลายบรรทัดและ:
$string='Hello<br>World<br><br />World<br><br><br>Word!';
<<<'comment'
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
comment;
รหัสสด: http://codepad.viper-7.com/22uOtV
หมายเหตุ: nowdocนั้นคล้ายกับheredocแต่ไม่แยกวิเคราะห์เนื้อหาและจะต้องมีตัวคั่นเริ่มต้นล้อมรอบด้วย'
เครื่องหมายคำพูดเดี่ยว'
( โปรดทราบว่าตัวคั่นสิ้นสุดไม่สามารถระบุได้ต้องตามด้วย;
และบรรทัดใหม่ ! )
2. กระโดดข้ามรหัสด้วยการข้ามไป :
$string='Hello<br>World<br><br />World<br><br><br>Word!';
goto landing;
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
landing:
ตัวอย่างสด: http://codepad.viper-7.com/UfqrIQ
3. ข้ามรหัสด้วยif(false)
หรือif(0)
:
$string='Hello<br>World<br><br />World<br><br><br>Word!';
if(0){
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
}
ทดสอบ: http://codepad.viper-7.com/wDg5H5