การใช้ฟังก์ชัน preg_match() ใน PHP

Use Preg_match Function Php



นิพจน์ทั่วไปเป็นรูปแบบเฉพาะที่สามารถใช้เพื่อจับคู่ ค้นหา และแทนที่สตริงใดๆ ในข้อมูลข้อความ เป็นคุณลักษณะที่มีประสิทธิภาพของภาษาการเขียนโปรแกรมใดๆ ส่วนใหญ่จะใช้ในการตรวจสอบแบบฟอร์มประเภทต่างๆ เช่น การตรวจสอบอีเมล การตรวจสอบรูปแบบโทรศัพท์ การตรวจสอบฟิลด์ชื่อผู้ใช้และรหัสผ่านของแบบฟอร์มการเข้าสู่ระบบ ฯลฯ เนื้อหาเฉพาะใดๆ ของข้อความสามารถค้นหาและแทนที่โดยใช้นิพจน์ทั่วไป ลวดลาย. เรียกอีกอย่างว่า regex หรือ RegExp สัญลักษณ์ประเภทต่างๆ ใช้เพื่อกำหนดรูปแบบ regex

มีฟังก์ชันในตัวจำนวนมากใน PHP สำหรับนิพจน์ทั่วไป ฟังก์ชัน preg_match() เป็นหนึ่งในนั้น ฟังก์ชันนี้ใช้สำหรับจับคู่รูปแบบเฉพาะในข้อมูลสตริง วิธีการใช้ฟังก์ชัน preg_match() ใน PHP สำหรับการทำงานต่างๆ ได้อธิบายไว้ในบทช่วยสอนนี้







ไวยากรณ์:

Int หรือเท็จ preg_match (สตริง$pattern,สตริง$ subject [, อาร์เรย์ &$matches = โมฆะ [,int$flags = 0 [,int$offset = 0]]])

ฟังก์ชันนี้สามารถรับอาร์กิวเมนต์ได้ห้าอาร์กิวเมนต์ อาร์กิวเมนต์แรก $pattern บังคับ ซึ่งกำหนดรูปแบบสำหรับการจับคู่ อาร์กิวเมนต์ที่สอง $ subject เป็นข้อบังคับ และมีข้อมูลสตริงที่จะใช้รูปแบบ อาร์กิวเมนต์ที่สาม $matches เป็นทางเลือกและจะส่งคืนอาร์เรย์ตามการจับคู่ อาร์กิวเมนต์ที่สี่, $flags เป็นทางเลือก ซึ่งมีค่าแฟล็กประเภทต่างๆ ตามการจับคู่ อาร์กิวเมนต์ที่ห้า, $offset เป็นทางเลือก และสามารถใช้เพื่อกำหนดตำแหน่งเริ่มต้นของการค้นหา



ตัวอย่างที่ 1: จับคู่รูปแบบโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

ตัวอย่างต่อไปนี้แสดงการใช้ฟังก์ชัน preg_match() สำหรับการจับคู่สตริงในลักษณะที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ สร้างไฟล์ PHP ด้วยสคริปต์ต่อไปนี้



ในที่นี้ มีการใช้รูปแบบสามรูปแบบสำหรับใช้ในฟังก์ชัน preg_match() สามฟังก์ชัน รูปแบบแรก, '/ชอบ/', ใช้สำหรับจับคู่สตริงในลักษณะที่คำนึงถึงขนาดตัวพิมพ์ รูปแบบที่สอง, '/ชอบ/' ใช้สำหรับจับคู่สตริงในลักษณะที่คำนึงถึงขนาดตัวพิมพ์ รูปแบบที่สาม, 'ชอบ / ฉัน' ใช้สำหรับจับคู่สตริงในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ search_pattern() ฟังก์ชั่นถูกกำหนดไว้ในสคริปต์เพื่อใช้ฟังก์ชัน preg_match() สำหรับการจับคู่ และพิมพ์ข้อความตามค่าที่ส่งคืนของฟังก์ชันนี้







//กำหนดข้อความ

$text = 'ฉันชอบ PHP ฉันชอบจาวาสคริปต์ด้วย';

//กำหนดรูปแบบสามประเภท

$pattern1 = '/ชอบ/';

$pattern2 = '/ชอบ/';

$pattern3 = '/ถูกใจ/ผม';

//กำหนดฟังก์ชันสำหรับค้นหารูปแบบในข้อความ

การทำงานsearch_pattern($pattern, $string)

{

ถ้า( preg_match ($pattern, $string))

โยนออก 'ผลการค้นหา: พบการจับคู่สำหรับรูปแบบ -$pattern
'
;

อื่น

โยนออก 'ผลการค้นหา: ไม่พบการจับคู่สำหรับรูปแบบ -$pattern
'
;

}

//พิมพ์ข้อความต้นฉบับ

โยนออก 'ข้อความต้นฉบับคือ: $text
'
;

//เรียกใช้ฟังก์ชันสามครั้งสำหรับสามรูปแบบ

search_pattern($pattern1, $text);

search_pattern($pattern2, $text);

search_pattern($pattern3, $text);

?>

เอาท์พุต :

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์จากเซิร์ฟเวอร์ บรรทัดแรกแสดงข้อความที่มีการค้นหารูปแบบ บรรทัดที่สองแสดงผลลัพธ์ของรูปแบบแรก บรรทัดที่สามแสดงผลลัพธ์ของรูปแบบที่สอง บรรทัดที่สี่แสดงผลลัพธ์ของรูปแบบที่สาม



ตัวอย่างที่ 2: ตรวจสอบ URL

ตัวอย่างต่อไปนี้แสดงวิธีการตรวจสอบที่อยู่ URL โดยใช้ฟังก์ชัน preg_match() สร้างไฟล์ PHP ด้วยสคริปต์ต่อไปนี้

ค่า URL ถูกกำหนดในตัวแปร $url สำหรับการทดสอบ สตริง '@^(?:https://)?([^/]+)@i' ถูกใช้เป็นรูปแบบในฟังก์ชัน preg_match() เพื่อตรวจสอบว่าที่อยู่ URL ถูกต้องหรือไม่ หากถูกต้อง ชื่อโฮสต์และชื่อโดเมนจะถูกพิมพ์ มิฉะนั้น ข้อความแสดงข้อผิดพลาดจะถูกพิมพ์



//กำหนด URL

$url = 'https://www.linuxhint.com';

//กำหนดรูปแบบสำหรับตรวจสอบ URL

$pattern ='@^(?:https://)?([^/]+)@i';

//ตรวจสอบว่า URL ถูกต้องหรือไม่

ถ้า( preg_match ($pattern, $url, $matches1))

{

//พิมพ์ข้อความแสดงความสำเร็จ

โยนออก 'URL นี้ถูกต้อง
'
;

//พิมพ์อาร์เรย์ที่มีค่าที่ตรงกัน

โยนออก 'ค่าของอาร์เรย์คือ:';

print_r ($matches1);

//ดึงและพิมพ์ค่าโฮสต์

$host = $matches1[1];

โยนออก '
ชื่อโฮสต์คือ:$host'
;

//ค้นหาชื่อโดเมนจากค่าโฮสต์

preg_match ('/[^.-lex.europa.eu+.[^.íritu+$/', $host, $matches2);

โยนออก '
ชื่อโดเมนคือ:{$matches2[0]}'
;

}

อื่น

{

//พิมพ์ข้อความแสดงข้อผิดพลาด

โยนออก 'URL ไม่ถูกต้อง.';

}

?>

เอาท์พุต :

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์จากเซิร์ฟเวอร์ URL ที่ระบุในสคริปต์นั้นถูกต้อง ดังนั้น ผลลัพธ์จะแสดงค่าของ $matches ชื่อโฮสต์ของ URL และชื่อโดเมนของ URL

ตัวอย่างที่ 3: รูปแบบการค้นหาด้วยแฟล็กและค่าออฟเซ็ต

ตัวอย่างต่อไปนี้แสดงการใช้แฟล็กและค่าออฟเซ็ตในฟังก์ชัน preg_match() สร้างไฟล์ PHP ด้วยสคริปต์ต่อไปนี้

สามรูปแบบถูกใช้ในสคริปต์สำหรับการจับคู่สามประเภท ในฟังก์ชัน preg_match() แรก '/(bangla)(desh)/' ถูกใช้เป็นรูปแบบและค่าแฟล็ก จะใช้ PREG_OFFSET_CAPTURE ค่าของ $matches ตัวแปรจะพิมพ์ตามผลลัพธ์ของฟังก์ชัน preg_match() แรก ในฟังก์ชัน preg_match() ที่สอง '/(bangla)(glad)*(desh)/i' ถูกใช้เป็นรูปแบบและค่าแฟล็ก จะใช้ PREG_UNMATCHED_AS_NULL หากส่วนใดของรูปแบบไม่ตรงกัน ค่า NULL จะถูกเก็บไว้ในอาร์เรย์ ค่าของ $matches ตัวแปรจะพิมพ์ตามผลลัพธ์ของฟังก์ชัน preg_match() ตัวที่สอง ในฟังก์ชัน preg_match() ที่สาม '/glad/' ถูกใช้เป็นรูปแบบ ค่าแฟล็ก PREG_OFFSET_CAPTURE ถูกใช้ และใช้ 3 เป็นค่าออฟเซ็ต ค่าของ $matches ตัวแปรจะพิมพ์ตามผลลัพธ์ของฟังก์ชัน preg_match() ที่สาม



//กำหนดค่าข้อความ

$text = 'บังคลาเทศ';

//กำหนดรูปแบบสามประเภท

$pattern1 = '/ (บางลา) (เดช) / ผม';

$pattern2 = '/ (บางลา) (ดีใจ) * (desh) / ฉัน';

$pattern3 = '/ยินดี/';


//ใช้ค่าสถานะ PREG_OFFSET_CAPTURE

preg_match ($pattern1, $text, $matches,PREG_OFFSET_CAPTURE);

โยนออก '
';  

print_r ($matches);

echo '

'
;

//ใช้ค่าสถานะ PREG_UNMATCHED_AS_NULL

preg_match ($pattern2, $text, $matches,PREG_UNMATCHED_AS_NULL);

โยนออก '
';  

print_r ($matches);

echo '

'
;

//ใช้ค่าสถานะ PREG_OFFSET_CAPTURE และค่าออฟเซ็ต

preg_match ($pattern3, $text, $matches,PREG_OFFSET_CAPTURE, 3);

โยนออก '
';  

print_r ($matches);

echo '
'
;

?>

เอาท์พุต :

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์จากเซิร์ฟเวอร์

บทสรุป

มีการอธิบายการใช้งานฟังก์ชัน preg_match() ในบทช่วยสอนนี้โดยใช้ตัวอย่างหลายตัวอย่าง มีการใช้อาร์กิวเมนต์ต่างๆ ของฟังก์ชันนี้ด้วย ผู้อ่านจะสามารถใช้ฟังก์ชันนี้ได้อย่างถูกต้องในสคริปต์หลังจากอ่านบทช่วยสอนนี้