อั ลกอริทึม การค้นหาสตริง เป็นวิธีการที่จำเป็นในการเขียนโปรแกรมที่ใช้เพื่อค้นหาตำแหน่งของสตริงย่อยภายในสตริงที่ใหญ่กว่า อัลกอริทึมนี้มักใช้เพื่อค้นหาคำสำคัญ ลำดับอักขระ หรือรูปแบบภายในข้อความหรือข้อมูล ใน PHP มีวิธีการต่างๆ เช่น strpos() และ strstr() พร้อมสำหรับการค้นหาสตริง
อัลกอริทึมการค้นหาสตริงทำงานอย่างไร
อัลกอริทึมการค้นหาสตริงทำงานดังนี้:
- ข้อความที่จะค้นหาใน: ขั้นแรก เราต้องมีสตริงที่ใหญ่ขึ้น(ข้อความ ข้อมูล) ซึ่งอยู่ภายในที่เราต้องการค้นหา
- รูปแบบเพื่อค้นหา: เราต้องการสตริงย่อย(คำหลัก รูปแบบ) ที่เราต้องการค้นหาภายในข้อความ
- จับคู่สตริง: อัลกอริทึมจะเปรียบเทียบอักขระแต่ละตัวของรูปแบบกับอักขระที่สอดคล้องกันในข้อความ หากอักขระที่เกี่ยวข้องไม่ตรงกัน อัลกอริทึมจะตรวจสอบตำแหน่งถัดไปต่อไป
- การส่งคืนตำแหน่ง: หากพบสตริงย่อยภายในสตริงที่ใหญ่กว่า อัลกอริทึมจะส่งกลับตำแหน่งของการเกิดขึ้นครั้งแรก หากไม่พบ อัลกอริทึมจะส่งกลับค่าที่ไม่มีอยู่จริง(เช่น -1)
ข้อดีและข้อเสียของอัลกอริทึมการค้นหาสตริง
ข้อดี:
- เรียบง่ายและเข้าใจได้: อัลกอริทึมนี้ง่ายต่อการติดตั้งและใช้งาน
- ประสิทธิภาพที่ดีสำหรับสตริงแบบสั้น: ทำงานได้ดีเมื่อค้นหาด้วยสตริงแบบสั้น
ข้อเสีย:
- ประสิทธิภาพต่ำสำหรับสตริงแบบยาว: ประสิทธิภาพอาจลดลงอย่างมากเมื่อค้นหาด้วยสตริงแบบยาว
- ค้นหาการเกิดขึ้นครั้งแรกเท่านั้น: อัลกอริทึมจะส่งกลับตำแหน่งของสตริงย่อยที่เกิดขึ้นครั้งแรกเท่านั้น
ตัวอย่างและคำอธิบาย
สมมติว่าเรามีข้อความรายละเอียดสินค้า และเราต้องการตรวจสอบว่าคำหลัก screen "ปรากฏในข้อความหรือไม่ ด้านล่างนี้คือตัวอย่างวิธีการค้นหาสตริงใน PHP:
$text = "This product features a wide and high-quality screen.";
$keyword = "screen";
$position = strpos($text, $keyword);
if($position !== false) {
echo "The keyword \"$keyword\" was found at position $position in the text.";
} else {
echo "The keyword \"$keyword\" was not found in the text.";
}
ในตัวอย่างนี้ เราใช้ฟังก์ชัน strpos() เพื่อค้นหาตำแหน่งของคีย์เวิร์ดที่เกิดขึ้นครั้งแรก screen ภายในข้อความ หากพบคำหลัก ตำแหน่งแรกจะถูกพิมพ์ หากไม่มี ข้อความระบุว่าไม่พบคีย์เวิร์ดจะปรากฏขึ้น
แม้จะง่ายและมีประสิทธิภาพสำหรับกรณีการค้นหาพื้นฐาน อัลกอริทึมการค้นหาสตริงอาจทำงานได้ไม่ดีกับข้อความยาวๆ และไม่สามารถค้นหาเหตุการณ์ทั้งหมดของสตริงย่อยได้



