..


ลิงก์ผู้สนับสนุน

PCRE ฟังก์ชั่นการแสดงออกปกติ (และความแตกต่างด้วยฟังก์ชั่ POSIX)

บทความที่เขียนโดย Max Bossi
หน้า 1 จาก 4

เรามี บอกใบ้อยู่แล้ว ในวันล่าสุดผ่านหน้าของบล็อกของเรา แต่วันนี้ฉันต้องการจะตรวจสอบหัวข้อที่ผมเชื่อว่าจะเป็นที่สนใจสำหรับหลายพันนักพัฒนา -- เช่นฉัน -- ทุกวันใช้ PHP ในการพัฒนาโปรแกรมเว็บของพวกเขา

เริ่มต้นกับรุ่น 5.3 ของ PHP ในความเป็นจริงนักพัฒนาที่ต้องการใช้ประโยชน์จากศักยภาพของการแสดงผลปกติไม่สามารถทำให้การใช้ฟังก์ชัน POSIX (เพื่อจะพูด ereg () และครอบครัว) แต่ต้อง, จำเป็นต้องใช้ฟังก์ชัน PCRE (Perl Compatible Regular นิพจน์), ตัวอย่างเช่น preg_match () .

ฟังก์ชั่นที่สร้างขึ้นใน PCRE PHP ช่วยให้คุณสามารถใช้ไวยากรณ์นิพจน์ปกติทั่วไปของ Perl (เพิ่มเติมแม่นยำ, การใช้งานปัจจุบันให้การสนับสนุนไวยากรณ์ของ Perl 5.005) ซึ่งแตกต่างกันเล็กน้อยจากที่ฟังก์ชั่น POSIX สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์ของ PCRE เป็นไปได้ที่จะปรึกษา คู่มือ ที่มีอยู่บน PCRE.org เว็บไซต์อย่างเป็นทางการ

การเปรียบเทียบ : preg_match ()

ถ้าคุณต้องการที่จะทำให้การเปรียบเทียบระหว่างสตริงและรูปแบบ (รูปแบบการเขียนในรูปแบบของการแสดงผลปกติ) ที่จะต้องใช้ preg_match () ที่ในความเป็นจริงแทนที่ ereg () และ eregi ()

การใช้ preg_match () คือในการใช้งานร่วมกันค่อนข้างง่าย : คุณผ่านการทำงานของรูปแบบและสตริงเพื่อตรวจสอบ หากรูปแบบเป็นที่พอใจฟังก์ชันจะส่งกลับ 1 ถ้า 0 (หรือ FALSE ถ้าข้อผิดพลาด)

ในความเป็นจริงการโยกย้ายจาก ereg () ไม่ได้เป็นสิ่งที่ซับซ้อน คุณจะต้องมีความฉลาดน้อยในการกำหนดรูปแบบที่

นี่คือตัวอย่าง :

 



 <? Php







 ถ้า (preg_match ('/ mrwebmaster / i','MrWebmaster อยู่นาน!')) {



  



 echo"พบ";







 else {}



  



 echo"ไม่พบ";







 }







 ?>

 
นี้จะเหมือนกัน :
 



 <? Php







 ถ้า (eregi ('mrwebmaster','MrWebmaster อยู่นาน!')) {



  



 echo"พบ";







 else {}



  



 echo"ไม่พบ";







 }







 ?>

 

ในตัวอย่างง่ายๆของการใช้ preg_match () เราใช้สตริงที่เป็นรูปแบบ

 



 / Mrwebmaster / s

 
ลองมาดูไวยากรณ์ :
  • / ... / -- กำหนดเขตเริ่มต้นและสิ้นสุดของนิพจน์;
  • mrwebmaster -- เป็นสตริงง่ายที่คุณต้องการตรวจสอบข้อความที่ส่งผ่านเป็นอาร์กิวเมนต์ที่สองนั้น
  • I --"I"หลังจากปิดตัวคั่นชี้ให้เห็นว่าการค้นหาที่ควรจะไม่กรณีที่สำคัญ (เช่นเดียวกับที่ทำโดยใช้ฟังก์ชัน eregi ()) เทคนิคนี้"ฉัน"คือการปรับปรุงใน หน้านี้ รายการที่สมบูรณ์ของการปรับเปลี่ยนอนุญาตให้ใช้ในไวยากรณ์ของ PCRE

ความแตกต่างกับ ereg ()

ที่คุณสามารถเห็นความแตกต่างกับ ereg () จะมีไม่มากให้เราสรุปได้สั้น ๆ :

  • การใช้ตัวคั่น / ... / (ที่จริงคุณสามารถใช้ตัวอักษรอื่น ๆ เป็นตัวคั่น แต่เฉือนเป็นตัวเลือกที่ปกติ);
  • รุ่นกรณีตาย (eregi ()) จะถูกแทนที่ด้วยการใช้"ฉัน"หลังจากที่ปิดตัวคั่น;
  • การแสดงตนของตัวอักษร / ในรูปแบบที่จะต้องใช้ (ถ้าคุณจะใช้ในการเฉือนเป็นตัวคั่น) หลบหนี (\ /) เพื่อที่จะไม่ต้องสับสนกับตัวคั่นที่
  • . ในทางกลับกันกับการทำงาน PCRE; เช่นสอดคล้องกับตัวเลขที่ 10 และ 13 เส้นกลับสายการบินใหม่ : มีบางแตกต่างกันเล็กน้อยในการจัดการของอักขระ ASCII (ที่ฟังก์ชัน POSIX ซึ่งแตกต่างจาก PCRE ยอมรับอักขระ ASCII ที่เป็นตัวเลขจะมี 10 หมายถึงเฉพาะสิบตัวเลข)
  • ereg ฟังก์ชัน () ยอมรับเฉพาะสามพารามิเตอร์ (รูปแบบข้อความที่จะตรวจสอบและเลือกแถวที่จะถือผล) และ preg_match () ยอมรับห้า (ที่สองครั้งแรกเราได้เห็นแล้วจะต้องมีที่อื่น ๆ ที่สามเป็นตัวเลือก );

บนพื้นฐานของการข้างต้น (และความแตกต่างที่ได้รับการกล่าวถึง) เราสามารถพิจารณาอีกครั้ง (บางส่วน) คำอธิบายเชิงทฤษฎีที่ถูกต้องเกี่ยวกับไวยากรณ์ของนิพจน์ปกติสามารถพบได้ที่ หน้านี้ จากบทความ"นิพจน์ปกติใน PHP"ทุ่มเทให้กับการทำงานของ POSIX เก่า .

ในประเภทเดียวกัน ...
E - Learning
ลินุกซ์ (หลักสูตร) ลินุกซ์ (หลักสูตร)
คู่มือที่สมบูรณ์ในระบบเปิดแหล่งที่มา จาก 49 €
MySQL (Course) MySQL (Course)
การบริหารจัดการฐานข้อมูลโอเพนซอร์ส จาก 39 €
PHP (หลักสูตร) PHP (หลักสูตร)
หลักสูตรเต็มสำหรับการสร้างเว็บไซต์แบบไดนามิก จาก 49 €
ลิงก์ผู้สนับสนุน