รวม String functions ใน PHP
String Functions เป็นกลุ่มของฟังก์ชั่นที่ทำงานกับข้อความ ถือเป็นกลุ่มของ functions ที่ถูกเรียกใช้งานมากที่สุด เพราะเราต้องทำงานกับ string ตลอดเวลาทั้งการตัด string ด้วย substr หรือการหาตำแหน่งของตัวอักษรที่ต้องการด้วย strpos
ในบทความนี้จะรวมเอาฟังก์ชั่นที่ใช้บ่อยๆ เพื่อที่เราจะได้จำไปใช้เฉพาะฟังก์ชั่นที่สำคัญๆก่อน ซึ่ง string functions ที่เรานำมาแนะนำในบทความนี้ประกอบด้วย
strpos() function
เป็นฟังก์ชั่นสำหรับหาตำแหน่งของตัวอักษรหรือข้อความในข้อความที่ต้องการ
ถ้าค้นหาพบจะ return ตำแหน่งที่พบในตำแหน่งแรก ถ้าไม่พบก็จะ return FALSE กลับมา
echo strpos("PHP Training Center", "Training");
ผลลัพธ์ ที่ได้จะเป็น 4
เนื่องจากตำแหน่งของตัวอักษรเริ่มนับตั้งแต่ 0 ไม่ใช่ 1 ดังนั้นผลลัพธ์ที่ return กลับมาคือ 4 ไม่ใช่ 5
คำเตือน
การตรวจสอบว่า ค้นพบหรือไม่ต้องใช้เครื่องหมาย “===” แทนที่จะใช้ “==” เพราะถ้าเราเจอตัวอักษรนั้นตั้งแต่ตำแหน่งแรก strpos() จะ return ค่ากลับมาเป็น 0
ทำให้ if จะมองว่าเป็น FALSE เพราะถ้าเราเปรียบเทียบด้วยเครื่องหมาย “==” จะมองว่า 0 กับ FALSE มีค่าเท่ากัน
if(strpos("PHP Training Center", "PHP") === TRUE){
// พบคำว่า PHP ในข้อความ
}
substr() Function
substr() ถือว่าเป็นฟังก์ชั้นที่เราเรียกใช้บ่อยมากๆ ใช้ในการตัดข้อความบางส่วนออกมาโดยที่รับ parameters 3 ตัวดังนี้
substr(string, offset, length)
- string ข้อความเต็มที่เราต้่องการตัดเอาเฉพาะบางส่วนออกมา
- offset ตำแหน่งเริ่มต้นของการตัดนับตาม index ของ array(ตัวอักษรตัวแรกเร่ิมต้นที่ 0)
ถ้าใช้เครื่องหมาย - จะเป็นการนับจากด้านหลัง ตัวสุดท้ายเริ่มต้นที่ -1
- length ต้องการตัดออกมากี่ตัวอักษร
ตัวอย่าง การใช้ substr()
|
|
substr() และ strpos()
เราจะเห็นการใช้งาน substr() ร่วมกับ strpos() อยู่บ่อยๆ นี่เป็นตัวอย่างของการใช้งาน substr() และ strpos() โดยที่เราจะหาค่าเริ่มต้นหรือ offset จากการใช้ strpos() แบบนี้
|
|
หรือจะเขียนรวมกันเป็นบรรทัดเดียวแบบนี้
|
|
substr() กับภาษาไทย
ถ้าเราใช้ substr() กับภาษาไทย เราจะได้ผลลัพธ์ที่ผิดพลาดแบบนี้
|
|
ผลลัพธ์ของ substr() จะออกมาเป็นภาษาต่างดาว
��ความภาษาไทย
การใช้ substr() นั้นจะทำงานอย่างถูกต้องแค่ภาษาอังกฤษเท่านั้น เนื่องจาก substr() จะทำงานกับตัวอักษรที่เป็นรหัส ASCII แต่ภาษาอื่นๆรวมทั้งภาษาไทยจะถูกเก็บเป็น utf-8 ดังนั้นการตัดข้อความที่เป็น utf-8 เราต้องใช้ mb_substr() แทน แต่ก่อนที่จะใช้งาน mb_substr() เราต้องติดตั้ง php-mbstring ก่อนด้วยคำสั่ง
sudo apt-get install php-mbstring
หลังจากติดตั้ง php-mbstring แล้วเราจะสามารถเรียกใช้ mb_substr() ได้แบบนี้
|
|
เราจะได้ผลลัพธ์แบบนี้
ภาษาไทย
นอกจากนี้เรายังสามารถใช้ string functions อื่นๆโดยเติมคำว่า mb_ เข้าไปข้างหน้า เช่น mb_strpos() หรือ mb_strlen()
strlen() Function
เป็นฟังก์ชั่นสำหรับการหาความยาวของข้อความ ในตัวอย่างเป็นการหาความยาวของคำว่า “PHP Training Center”
echo strlen("PHP Training Center");
ผลลัพธ์จะออกมาเป็นจำนวนตัวอักษร ซึ่งมีค่าเป็น 19
ข้อเนะนำ ส่วนใหญ่จะใช้ใน loop ที่ต้องการวนทุกๆตัวอักษรในข้อความ แล้วต้องการหาจำนวนรอบทั้งหมดที่ต้องวน
strtolower() Function
เราจะทำการเปลี่ยนข้อความทั้งหมดให้เป็นตัวพิมพิ์เล็ก(Lowercase) โดยที่ strtoupper จะรับ parameter แค่ตัวเดียวคือ string ที่ต้องการแปลงเป็นตัวพิมพิ์เล็ก
|
|
ผลลัพธ์จะออกมาแบบนี้่
mary had a little lamb and she loved it so
strtoupper() Function
เราจะทำการเปลี่ยนข้อความทั้งหมดให้เป็นตัวพิมพิ์ใหญ่(Upppercase) โดยที่ strtoupper จะรับ parameter แค่ตัวเดียวคือ string ที่ต้องการแปลงเป็นตัวพิมพิ์ใหญ่
|
|
ผลลัพธ์จะออกมาแบบนี้่
MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
ucfirst() Function
เป็นฟังก์ชั้นสำหรับการแปลงตัวอักษรตัวแรกของคำให้กลายเป็นตัวพิมพิ์ใหญ่
|
|
ข้อควรระวัง ucfirst() จะทำงานกับตัวอักษรแค่ตัวแรกเท่านั้น ดังนั้นถ้าข้อความที่ input เข้ามาเป็นตัวพิมพิ์ใหญ่ทั้งหมดจะออกมาเป็นแบบนี้
|
|
ผลลัพธ์จะออกมาเหมือนเดิมไม่มีการเปลี่ยนแปลงเนื่องจาก H เป็นตัวพิมพิ์ใหญ่อยู่แล้ว และ ucfirst() จะไม่เข้าไปยุ่งกับตัวอักษรอื่นๆ
HELLO WORLD!
ดังนั้นถ้าเราอยากจะได้ผลลัพธ์แบบตัวอย่างแรกเราต้องใส่ strtolower() เข้าไปก่อนแบบนี้
$bar = ucfirst(strtolower($bar));
ผลลัพธ์จะออกมาเป็น
Hello world!
ucwords() Function
เป็น function ที่ทำงานเหมือนกับ ucfirst() แต่ทำกับทุกๆคำ
|
|
ผลลัพธ์จะออกมาเป็น
Hello World!
และเช่นเดียวกับตัวอย่างของ ucfirst() ฟังก์ชั่น ucwords() จะทำงานกับตัวอักษรตัวแรกของแต่ละคำเท่านั้น ดังนั้นตัวอักษรอื่นๆ ucwords() ก็จะไม่เข้าไปยุ่ง ซึ่งถ้าเราใส่ข้อความที่เป็นตัวพิมพิ์ใหญ่เข้าไปจะได้ผลลัพธ์แบบนี้
|
|
ผลลัพธ์จะออกมาเป็น HELLO WORLD! เหมือนเดิม ดังนั้นถ้าเราต้องการให้ผลลัพธ์ออกมาเป็น Hello World! เราต้องใช้ strtolower() ปรับให้อักขระทุกตัวเป็นตัวพิมพิ์เล็กก่อนแบบนี้
$bar = ucwords(strtolower($bar)); // Hello World!
ถ้าเราไม่ได้ใช้ sperator เป็น เว้นวรรค(spcae), tab หรือ ขึ้นบรรทัดใหม่ เราสามารถใส่ sperator เข้าไปเป็น parameter ตัวที่ 2 ได้แบบนี้
|
|
ในตัวอย่างนี้เราใช้ “|” เป็นตัวคั่นระหว่างคำ
ใน PHP ยังมี string functions อีกมากมายให้เราเลือกใช้ ซึ่งสามารถเข้าไปดู function อื่นๆเพิ่มเติมได้ที่ String Functions