ต่อไปนี้คือชุดของโค้ดฟังก์ชันทั่วไปสำหรับนิพจน์ทั่วไปใน PHP เพื่ออำนวยความสะดวกในการเรียนรู้นิพจน์ทั่วไปของ PHP
preg_grep
(เปโซฟิลิปปินส์ 4, เปโซฟิลิปปินส์ 5)
preg_grep -- ส่งกลับรูปแบบการจับคู่คำอธิบายเซลล์อาร์เรย์
array preg_grep ( รูปแบบสตริง, อินพุตอาร์เรย์ [, int flags] )
preg_grep() ส่งคืนอาร์เรย์ที่มีเซลล์ในอาร์เรย์อินพุตที่ตรงกับรูปแบบรูปแบบที่กำหนด
ธงสามารถเป็นธงต่อไปนี้:
PREG_GREP_INVERT
หากส่งผ่านแฟล็กนี้ preg_grep() จะส่งคืนเซลล์ในอาร์เรย์อินพุตที่ไม่ตรงกับรูปแบบที่กำหนด แท็กนี้ใช้งานได้ตั้งแต่ PHP 4.2.0
ตั้งแต่ PHP 4.0.4 ผลลัพธ์ที่ส่งคืนโดย preg_grep() จะถูกจัดทำดัชนีโดยใช้คีย์จากอาร์เรย์อินพุต หากคุณไม่ต้องการผลลัพธ์ดังกล่าว ให้ใช้ array_values() เพื่อสร้างดัชนีผลลัพธ์ที่ส่งคืนโดย preg_grep() ใหม่
ข้างต้นเป็นคำอธิบายของ preg_grep() ในคู่มือ ก่อนอื่น นี่คือฟังก์ชันปกติที่เข้ากันได้กับ Perl ดังนั้นฉันเดาว่า preg_grep หมายถึง p(perl)reg(regular)_grep การจับคู่ในอาร์เรย์หลายมิติและสามารถส่งคืนอาร์เรย์ที่ตรงกันหรือไม่ตรงกันผ่านพารามิเตอร์ flags ประสิทธิภาพของมันเร็วกว่าการใช้โครงสร้าง foreach(...){if...} มาก (ไม่ได้รับการยืนยัน) และสามารถจับคู่รูปแบบที่ซับซ้อนได้ มีประโยชน์อย่างมากในแอปพลิเคชันต่างๆ เช่น การค้นหาและการเรียงลำดับ
ตัวอย่าง:
-
$arr = array('abc'=>12.213,'bb'=>12345,'ba'=>23.2321,34.3,'23'=>'3.3','23434'=>'bbb');
// ส่งคืนองค์ประกอบอาร์เรย์ทั้งหมดที่มีตัวเลขทศนิยม
$fl_array = preg_grep ("/^(d+)?.d+$/", $arr);
print_r($fl_array);
-
preg_match
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_match -- คำแนะนำในการจับคู่นิพจน์ทั่วไป
int preg_match (รูปแบบสตริง, หัวเรื่องสตริง [, อาร์เรย์ตรงกัน [, int flags]] )
ค้นหาสตริงหัวเรื่องสำหรับเนื้อหาที่ตรงกับนิพจน์ทั่วไปที่กำหนดโดยรูปแบบ
หากมีการระบุรายการที่ตรงกัน ระบบจะเติมผลลัพธ์การค้นหา $matches[0] จะมีข้อความที่ตรงกับรูปแบบทั้งหมด $matches[1] จะมีข้อความที่ตรงกับรูปแบบย่อยแรกที่บันทึกไว้ในวงเล็บ และอื่นๆ
ธงสามารถเป็นธงต่อไปนี้:
PREG_OFFSET_CAPTURE
หากตั้งค่าสถานะนี้ ออฟเซ็ตสตริงที่เกี่ยวข้องจะถูกส่งกลับสำหรับการจับคู่แต่ละครั้งด้วย โปรดทราบว่าการดำเนินการนี้จะเปลี่ยนค่าของอาร์เรย์ที่ส่งคืน เพื่อให้แต่ละเซลล์ในเซลล์นั้นเป็นอาร์เรย์ด้วย โดยที่รายการแรกคือสตริงที่ตรงกัน และรายการที่สองคือออฟเซ็ต แท็กนี้ใช้งานได้ตั้งแต่ PHP 4.3.0
พารามิเตอร์ flags พร้อมใช้งานตั้งแต่ PHP 4.3.0
preg_match() ส่งคืนจำนวนครั้งที่รูปแบบที่ตรงกัน 0 ครั้ง (ไม่ตรงกัน) หรือ 1 ครั้ง เนื่องจาก preg_match() จะหยุดค้นหาหลังจากนัดแรก ในทางกลับกัน preg_match_all() จะเป็นการค้นหาจนจบเรื่อง หากมีข้อผิดพลาดเกิดขึ้น preg_match() จะส่งกลับ FALSE
เคล็ดลับ: หากคุณต้องการดูว่ามีสตริงหนึ่งอยู่ในอีกสตริงหนึ่งหรือไม่ อย่าใช้ preg_match() คุณสามารถใช้ strpos() หรือ strstr() แทนได้ ซึ่งเร็วกว่ามาก
ข้างต้นคือคำอธิบายของ preg_match() ในคู่มือ ฉันคิดว่าฟังก์ชันของฟังก์ชันนี้คือสามารถใช้สำหรับการตรวจสอบได้ กล่าวคือ สตริงบางตัวตรงตามข้อกำหนดบางประการหรือไม่ ข้อจำกัดคือตามที่กล่าวไว้ข้างต้น จะจับคู่ 0 ครั้งหรือ 1 ครั้ง และค่าที่ส่งคืนคือจำนวนรายการที่ตรงกัน เมื่อจำเป็นต้องมีการจับคู่แบบเต็ม สามารถใช้ preg_match_all() ได้ นอกจากนี้ยังควรกล่าวถึงบทบาทของอาร์เรย์ $matches ซึ่งสามารถใช้เป็นค่าส่งคืนของรูปแบบตัวเอง ซึ่งบางครั้งก็มีประโยชน์
ตัวอย่าง:
<?
if (preg_match ("/(bwebb)s(d)/i", "PHP คือเว็บ 45 เว็บสคริปต์ 34 ภาษาที่เลือก",$match)) {
พิมพ์ "พบรายการที่ตรงกัน";
print_r($ตรงกัน);
} อื่น {
พิมพ์ "ไม่พบรายการที่ตรงกัน";
-
?>
<?php
// รับชื่อโฮสต์จาก URL
preg_match("/^(http://)?([^/]+)/i",
" http://www.php.net/index.html ", $matches);
$host = $ตรงกัน[2];
// รับสองส่วนถัดไปจากชื่อโฮสต์
preg_match("/[^./]+.[^./]+$/", $host, $matches);
echo "ชื่อโดเมนคือ: {$matches[0]}n";
-
preg_match_all
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_match_all -- ทำการจับคู่นิพจน์ทั่วไปทั่วโลก คำอธิบายของฟังก์ชันนี้ในคู่มือมีความชัดเจนมาก ดังนั้นฉันจะไม่อธิบายเพิ่มเติม
แสดงให้เห็น
int preg_match_all (รูปแบบสตริง, หัวเรื่องสตริง, อาร์เรย์ที่ตรงกัน [, int flags])
ค้นหาเนื้อหาทั้งหมดในหัวเรื่องที่ตรงกับนิพจน์ทั่วไปที่กำหนดโดยรูปแบบ และวางผลลัพธ์ที่ตรงกันตามลำดับที่ระบุโดยแฟล็ก
หลังจากพบคู่แรกแล้ว การค้นหาครั้งต่อไปจะเริ่มต้นเมื่อสิ้นสุดคู่ก่อนหน้า
ธงสามารถเป็นการรวมกันของธงต่อไปนี้ (โปรดทราบว่ามันไม่สมเหตุสมผลที่จะใช้ PREG_PATTERN_ORDER และ PREG_SET_ORDER ร่วมกัน):
PREG_PATTERN_ORDER
จัดเรียงผลลัพธ์เพื่อให้ $matches[0] เป็นอาร์เรย์ของการจับคู่รูปแบบทั้งหมด $matches[1] เป็นอาร์เรย์ของสตริงที่จับคู่โดยรูปแบบย่อยในวงเล็บแรก และอื่นๆ
<?php
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", "<b>ตัวอย่าง: </b><div align=left>นี่คือการทดสอบ</div >",
$ออก, PREG_PATTERN_ORDER);
พิมพ์ $out[0][0].", ".$out[0][1]"n";
พิมพ์ $out[1][0].", ".$out[1][1]"n";
?>
ตัวอย่างนี้จะแสดงผล:
<b>ตัวอย่าง: </b>, <div align=left>นี่คือการทดสอบ</div>
ตัวอย่าง: นี่คือการทดสอบ
ดังนั้น $out[0] จึงมีสตริงที่ตรงกับรูปแบบทั้งหมด และ $out[1] มีสตริงระหว่างแท็ก HTML คู่หนึ่ง
PREG_SET_ORDER
จัดเรียงผลลัพธ์เพื่อให้ $matches[0] เป็นอาร์เรย์ของการจับคู่ชุดแรก $matches[1] เป็นอาร์เรย์ของการจับคู่ชุดที่สอง และอื่นๆ
<?php
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
"<b>ตัวอย่าง: </b><div align=left>นี่คือการทดสอบ</div>",
$ออก, PREG_SET_ORDER);
พิมพ์ $out[0][0].", ".$out[0][1]"n";
พิมพ์ $out[1][0].", ".$out[1][1]"n";
-
ตัวอย่างนี้จะแสดงผล:
<b>ตัวอย่าง: </b> ตัวอย่าง:
<div align=left>นี่คือการทดสอบ</div> นี่คือการทดสอบ
ในตัวอย่างนี้ $matches[0] คือชุดแรกของผลลัพธ์ที่ตรงกัน $matches[0][0] มีข้อความที่ตรงกับรูปแบบทั้งหมด $matches[0][1] มีข้อความที่ตรงกับรูปแบบย่อยแรก ,ลงท้ายด้วย และอื่นๆ ในทำนองเดียวกัน $matches[1] คือการจับคู่ชุดที่ 2 และต่อๆ ไป
PREG_OFFSET_CAPTURE
หากตั้งค่าสถานะนี้ ออฟเซ็ตสตริงที่เกี่ยวข้องจะถูกส่งกลับสำหรับการจับคู่แต่ละครั้งด้วย โปรดทราบว่าการดำเนินการนี้จะเปลี่ยนค่าของอาร์เรย์ที่ส่งคืน เพื่อให้แต่ละเซลล์เป็นอาร์เรย์ด้วย โดยที่รายการแรกคือสตริงที่ตรงกัน และรายการที่สองจะชดเชยภายในเรื่อง แท็กนี้ใช้งานได้ตั้งแต่ PHP 4.3.0
หากไม่มีการระบุแท็ก ระบบจะถือว่า PREG_PATTERN_ORDER
ส่งกลับจำนวนครั้งที่รูปแบบทั้งหมดตรงกัน (อาจเป็นศูนย์) หรือ FALSE เมื่อเกิดข้อผิดพลาด
ตัวอย่างที่ 1 รับหมายเลขโทรศัพท์ทั้งหมดจากข้อความ
<?php
preg_match_all ("/(? (d{3})? )? (?(1) [-s] ) d{3}-d{4}/x",
"โทร 555-1212 หรือ 1-800-555-1212", $phones);
?>
ตัวอย่างที่ 2. ค้นหาแท็ก HTML ที่ตรงกัน (โลภ)
<?php
// \2 เป็นตัวอย่างของการอ้างอิงแบบย้อนกลับ ความหมายใน PCRE คือ
// จะต้องจับคู่เนื้อหาภายในวงเล็บชุดที่สองในนิพจน์ทั่วไป ในกรณีนี้
// นั่นคือ ([w]+) เนื่องจากสตริงอยู่ในเครื่องหมายคำพูดคู่ คุณจึงต้องมี
//เพิ่มแบ็กสแลชพิเศษ
$html = "<b>ข้อความตัวหนา</b><a href=howdy.html>คลิกฉัน</a>";
preg_match_all ("/(<([w]+)[^>]*>)(.*)(</\2>)/", $html, $matches);
สำหรับ ($i=0; $i< นับ($matches[0]); $i++) {
echo "ตรงกัน: ".$matches[0][$i]"n";
echo "ตอนที่ 1: ".$matches[1][$i]"n";
echo "ตอนที่ 2: ".$matches[3][$i]"n";
echo "ตอนที่ 3: ".$matches[4][$i]"nn";
-
?>
preg_quote
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_quote -- หลีกคำอธิบายอักขระนิพจน์ทั่วไป
string preg_quote ( string str [, string delimiter] )
preg_quote() รับ str เป็นพารามิเตอร์และเพิ่มแบ็กสแลชหน้าอักขระแต่ละตัวที่เป็นของไวยากรณ์นิพจน์ทั่วไป หากคุณต้องการจับคู่สตริงที่สร้างขึ้นแบบไดนามิกเป็นรูปแบบ คุณสามารถใช้ฟังก์ชันนี้เพื่อยกเว้นอักขระพิเศษที่อาจมีได้
หากมีการระบุตัวคั่นอาร์กิวเมนต์เผื่อเลือกไว้ อักขระนี้จะถูก Escape ด้วย สามารถใช้เพื่อหลีกตัวคั่นที่ต้องการโดยฟังก์ชัน PCRE ตัวคั่นที่ใช้บ่อยที่สุดคือเครื่องหมายสแลช /
อักขระพิเศษสำหรับนิพจน์ทั่วไป ได้แก่: . + * ? [ ^ ] $ ( ) { } = !
หมายเหตุ: ฟังก์ชันนี้ปลอดภัยที่จะใช้กับวัตถุไบนารี
ข้างต้นเป็นคำอธิบายในคู่มือซึ่งชัดเจนมาก ดังนั้นฉันจะไม่ลงรายละเอียด นอกจากนี้ ยังมีหมายเหตุในคู่มือว่าฟังก์ชันนี้สามารถใช้ได้อย่างปลอดภัยสำหรับวัตถุไบนารีซึ่งมีประโยชน์มาก
ตัวอย่าง: ตัวอย่างที่ 1. preg_quote() ตัวอย่าง
<?php
$keywords = '$40 สำหรับ g3/400';
$keywords = preg_quote($keywords, '/');
echo $keywords; // ส่งกลับ $40 สำหรับ g3/400
?>
ตัวอย่างที่ 2. เพิ่มตัวเอียงให้กับคำในข้อความ
<?php
// ในตัวอย่างนี้ preg_quote($word) ใช้เพื่อกันเครื่องหมายดอกจันออกจากนิพจน์ทั่วไป
// มีความหมายพิเศษ.
$textbody = "หนังสือเล่มนี้*หายากมาก*";
$word = "*มาก*";
$textbody = preg_replace ("/".preg_quote($word)."/",
"<i>".$คำ"</i>",
$ตัวข้อความ);
?>
ขั้นตอนต่อไปคือการใช้ฟังก์ชัน preg_replace ที่มีความยืดหยุ่นสูง ทรงพลังมาก และใช้กันอย่างแพร่หลายมาก
preg_แทนที่
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_replace - ทำการค้นหานิพจน์ทั่วไปและแทนที่คำแนะนำ
ผสม preg_replace (รูปแบบผสม, การแทนที่แบบผสม, หัวเรื่องแบบผสม [, ขีดจำกัดจำนวนเต็ม])
ค้นหาหัวเรื่องเพื่อหารายการที่ตรงกันของรูปแบบรูปแบบ และแทนที่ด้วยการแทนที่ หากระบุขีดจำกัด ระบบจะแทนที่เฉพาะขีดจำกัดที่ตรงกัน หากละเว้นหรือมีค่าเป็น -1 รายการที่ตรงกันทั้งหมดจะถูกแทนที่
การแทนที่อาจมีการอ้างอิงย้อนกลับในรูปแบบ \n หรือ (ตั้งแต่ PHP 4.0.4) ในรูปแบบ $n โดยที่รูปแบบหลังเป็นที่ต้องการ การอ้างอิงแต่ละรายการจะถูกแทนที่ด้วยข้อความที่ตรงกับรูปแบบย่อยในวงเล็บที่บันทึกไว้ครั้งที่ n n สามารถอยู่ในช่วงตั้งแต่ 0 ถึง 99 โดยที่ \0 หรือ $0 หมายถึงข้อความที่ตรงกับรูปแบบทั้งหมด นับวงเล็บซ้ายจากซ้ายไปขวา (เริ่มต้นที่ 1) เพื่อให้ได้จำนวนรูปแบบย่อย
สำหรับรูปแบบการแทนที่ที่เป็นไปตามการอ้างอิงด้านหลังด้วยตัวเลข (นั่นคือ ตัวเลขที่ตามหลังรูปแบบที่ตรงกันทันที) สัญกรณ์ \1 ที่คุ้นเคยไม่สามารถใช้แทนการอ้างอิงด้านหลังได้ ตัวอย่างเช่น \11 จะทำให้ preg_replace() สับสนว่าต้องการ backreference ของ \1 ตามด้วยหมายเลข 1 หรือ backreference ของ \11 วิธีแก้ไขในกรณีนี้คือการใช้ ${1}1 สิ่งนี้จะสร้างการอ้างอิงย้อนกลับแบบแยกสำหรับ $1 โดยเหลืออีก 1 รายการไว้ตามตัวอักษร
หากพบว่าตรงกัน เรื่องที่ถูกแทนที่จะถูกส่งคืน มิฉะนั้นเรื่องเดิมจะถูกส่งคืน
พารามิเตอร์แต่ละตัวของ preg_replace() (ยกเว้นขีดจำกัด) สามารถเป็นอาร์เรย์ได้ หากทั้งรูปแบบและการแทนที่เป็นอาร์เรย์ พวกเขาจะถูกประมวลผลตามลำดับที่คีย์ปรากฏในอาร์เรย์ ซึ่งไม่จำเป็นต้องเหมือนกับลำดับตัวเลขของดัชนี หากใช้ดัชนีเพื่อระบุรูปแบบที่จะถูกแทนที่ด้วยการแทนที่ใด ควรเรียงลำดับอาร์เรย์ด้วย ksort() ก่อนที่จะเรียกใช้ preg_replace()
ถ้าหัวเรื่องเป็นอาร์เรย์ การค้นหาและแทนที่จะดำเนินการกับแต่ละรายการในหัวเรื่องและอาร์เรย์จะถูกส่งกลับ
หากรูปแบบและการแทนที่เป็นอาร์เรย์ทั้งคู่ preg_replace() จะนำค่าออกมาเพื่อค้นหาและแทนที่หัวเรื่อง หากมีค่าการแทนที่น้อยกว่าในรูปแบบ สตริงว่างจะถูกนำมาใช้เป็นค่าการแทนที่ที่เหลือ หากรูปแบบเป็นอาร์เรย์และการแทนที่เป็นสตริง สตริงนี้จะถูกใช้เป็นค่าการแทนที่สำหรับแต่ละค่าในรูปแบบ ในทางกลับกันก็ไม่มีความหมาย
ตัวแก้ไข /e ทำให้ preg_replace() ปฏิบัติต่ออาร์กิวเมนต์การแทนที่เป็นโค้ด PHP (หลังจากแทนที่การอ้างอิงด้านหลังที่เหมาะสมแล้ว) เคล็ดลับ: ตรวจสอบให้แน่ใจว่าการแทนที่สร้างสตริงโค้ด PHP ที่ถูกต้อง มิฉะนั้น PHP จะรายงานข้อผิดพลาดในการแยกวิเคราะห์ไวยากรณ์ในบรรทัดที่มี preg_replace()
หมายเหตุ: พารามิเตอร์ขีดจำกัดถูกเพิ่มหลังจาก PHP 4.0.1pl2
ฉันคิดว่าพลังของมันคือไม่เพียงแต่สามารถจัดการสตริงเท่านั้น แต่ยังรวมถึงอาร์เรย์ด้วย และฟังก์ชันการอ้างอิงแบบย้อนกลับนั้นมีความยืดหยุ่นมาก โดยพื้นฐานแล้ว สามารถตอบสนองความต้องการส่วนใหญ่ของผู้ใช้ทั่วไปได้ หากไม่มีประสิทธิภาพ เราก็มีฟังก์ชัน preg_replace_callback() ซึ่งสามารถปรับแต่งฟังก์ชันการโทรกลับให้ตรงตามความต้องการขั้นสูงของคุณได้ เช่นการออกแบบฟิลเตอร์ เป็นต้น
preg_replace_callback
(PHP 4 >= 4.0.5, PHP 5)
preg_replace_callback -- ใช้ฟังก์ชันโทรกลับเพื่อค้นหานิพจน์ทั่วไปและแทนที่คำแนะนำ
Mixed preg_replace_callback (รูปแบบผสม, callback callback, หัวเรื่องผสม [, int Limit])
ฟังก์ชันนี้มีพฤติกรรมเกือบเหมือน preg_replace() ยกเว้นว่าแทนที่จะจัดเตรียมพารามิเตอร์ทดแทน ฟังก์ชัน callback จะถูกระบุ ฟังก์ชันนี้รับอาร์เรย์ที่ตรงกันในสตริงเป้าหมายเป็นอินพุต และส่งกลับสตริงที่ใช้สำหรับการแทนที่
ตัวอย่างที่ 1. ตัวอย่าง preg_replace_callback()
<?php
// ข้อความนี้สำหรับปี 2002
// ตอนนี้อยากจะทำให้มันใช้ได้ในปี 2003
$text = "วันเอพริลฟูลส์คือวันที่ 04/01/2002n";
$text.= "คริสต์มาสครั้งสุดท้ายคือ 24/12/2001n";
// ฟังก์ชั่นโทรกลับ
ฟังก์ชั่น next_year($ ตรงกัน) {
// โดยปกติ: $matches[0] คือการจับคู่ที่สมบูรณ์
// $matches[1] คือการจับคู่สำหรับรูปแบบย่อยในวงเล็บแรก
//และอื่นๆ
กลับ $matches[1].($matches[2]+1);
-
เสียงสะท้อน preg_replace_callback (
"|(d{2}/d{2}/)(d{4})|",
"ถัดไป_ปี",
$ข้อความ);
//ผลลัพธ์คือ:
// วันเอพริลฟูลส์คือวันที่ 04/01/2546
// คริสต์มาสครั้งสุดท้ายคือ 12/24/2002
?>
คุณมักจะต้องใช้ฟังก์ชัน callback สำหรับ preg_replace_callback() ในที่เดียว ในกรณีนี้ คุณสามารถใช้ create_function() เพื่อประกาศฟังก์ชันที่ไม่ระบุตัวตนเป็นการเรียกกลับภายในการเรียกไปยัง preg_replace_callback() โดยการทำเช่นนี้ มีข้อมูลทั้งหมดสำหรับการโทรอยู่ในที่เดียว และไม่เกะกะเนมสเปซฟังก์ชันด้วยชื่อฟังก์ชันการโทรกลับที่ไม่ได้ใช้ที่อื่น
สำหรับเพื่อนที่ใช้ฟังก์ชัน preg_replace_callback() คุณน่าจะต้องใช้ฟังก์ชัน callback (ไม่อย่างนั้นจะใช้ทำไม? จะดีกว่าไหมถ้าใช้ preg_replace โดยตรง) แต่มักใช้ในที่เดียวเท่านั้น ในกรณีนี้ คุณสามารถใช้ create_function() เพื่อประกาศฟังก์ชันที่ไม่ระบุชื่อเป็นฟังก์ชัน callback ของ preg_replace_callback() ด้วยวิธีนี้ เราตอบสนองความต้องการในการประกาศข้อมูลโดยไม่สับสนกับชื่อฟังก์ชันที่จะไม่ใช้อีกครั้ง
ตัวอย่างที่ 2 preg_replace_callback() และ create_function()
<?php
/* ตัวกรองบรรทัดคำสั่งสไตล์ UNIX ที่ลบสตริงที่จุดเริ่มต้นของแต่ละย่อหน้า
*แปลงอักษรตัวพิมพ์ใหญ่เป็นอักษรตัวพิมพ์เล็ก*/
$fp = fopen("php://stdin", "r") or die("อ่าน stdin ไม่ได้");
ในขณะที่ (!feof($fp)) {
$line = fgets($fp);
$line = preg_replace_callback(
'|<p>s*w|',
create_function(
// การใช้เครื่องหมายคำพูดเดี่ยวที่นี่เป็นสิ่งสำคัญ
// หรือแทนที่ $ ทั้งหมดด้วย $
'$ ตรงกัน',
'ส่งคืน strtolower($matches[0]);'
-
เส้น $
-
สะท้อน $line;
-
fclose($fp);
?>
ในที่สุด
preg_split
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_split – แยกสตริงโดยใช้นิพจน์ทั่วไป ฉันจะไม่ลงรายละเอียดที่นี่
แสดงให้เห็น
array preg_split ( รูปแบบสตริง, หัวเรื่องสตริง [, ขีด จำกัด int [, int flags]] )
ส่งคืนอาร์เรย์ที่มีสตริงย่อยในหัวเรื่องแยกตามรูปแบบการจับคู่ขอบเขต
หากระบุขีดจำกัด สตริงย่อยขีดจำกัดส่วนใหญ่จะถูกส่งกลับ หากขีดจำกัดเป็น -1 หมายความว่าไม่มีขีดจำกัด และสามารถใช้เพื่อระบุแฟล็กพารามิเตอร์เผื่อเลือกต่อไปได้
ค่าสถานะสามารถเป็นการรวมกันของค่าสถานะต่อไปนี้ (รวมกับตัวดำเนินการระดับบิตหรือ | ):
PREG_SPLIT_NO_EMPTY
หากตั้งค่าสถานะนี้ preg_split() จะส่งคืนเฉพาะส่วนประกอบที่ไม่ว่างเปล่า
PREG_SPLIT_DELIM_CAPTURE
หากตั้งค่าแฟล็กนี้ นิพจน์วงเล็บปีกกาในรูปแบบตัวคั่นจะถูกบันทึกและส่งกลับด้วย แท็กนี้ถูกเพิ่มใน PHP 4.0.5
PREG_SPLIT_OFFSET_CAPTURE
หากตั้งค่าแฟล็กนี้ ออฟเซ็ตสตริงที่เกี่ยวข้องของแต่ละผลลัพธ์ที่ตรงกันจะถูกส่งกลับด้วย โปรดทราบว่าการดำเนินการนี้จะเปลี่ยนค่าของอาร์เรย์ที่ส่งคืน เพื่อให้แต่ละเซลล์เป็นอาร์เรย์ด้วย โดยที่รายการแรกคือสตริงที่ตรงกัน และรายการที่สองจะชดเชยภายในเรื่อง แท็กนี้ใช้งานได้ตั้งแต่ PHP 4.3.0
เคล็ดลับ: หากคุณไม่ต้องการพลังของนิพจน์ทั่วไป คุณสามารถเลือกใช้ตัวเลือกที่เร็วกว่า (และง่ายกว่า) เช่น explode() หรือ str_split()