ผมเชื่ออย่างหนึ่งว่า คนที่เขียนโปรแกรมด้วย PHP ไม่ช้าไม่นานก็จะต้องเขียนโค้ดในส่วนของการอัปโหลดไฟล์ หรือไม่ก็อัปโหลดภาพไปเก็บบนเซิฟเวอร์ ทีนี้ปัญหาอย่างหนึ่งที่จะตามมาก็คือว่า เราบอกว่าให้อัปโหลดภาพนะ แต่ก็จะมียูสเซ่อร์บางท่านทะลึ่งอัปไฟล์ .zip มาบ้าง .pdf มาบ้าง หรือไฟล์นามสกุลประหลาดๆมาบ้าง

เราจะไปดักตีหัวยูสเซ่อร์ก็ใช่ที่ จึงจำเป็นอย่างยิ่งที่จะต้องตรวจสอบก่อนว่าไฟล์นั้นๆ มีนามสกุลอะไร เป็นนามสกุลที่เรายอมรับได้หรือเปล่า

ดูโค้ดครับ

<?php
$file = 'my-image.jpg';
$extension = strrchr( $file , '.' );
echo $extension; // .jpg
?>

ด้วยคำสั่ง strrchr ง่ายๆเพียงแค่นี้ เราก็สามารถที่จะดึงนามสกุลของไฟล์ออกมาได้

แล้วคำสั่งนี้มันทำหน้าที่อะไร
คำสั่งนี้ จะทำหน้าที่ค้นหาตัวอักษรที่เราระบุไว้ในพารามิเตอร์ตัวที่ 2 (ในที่นี้คือ .) ตัวสุดท้ายที่เจอ แล้วมันจะตัดข้อความตั้งแต่ตำแหน่งที่มันเจอไปจนสุดข้อความ แต่ถ้าในข้อความที่เราระบุในพารามิเตอร์ตัวที่ 1 ไม่มีตัวอักษรที่ต้องการหา มันจะคืนค่ากลับมาเป็น false

ลองดูการประยุกต์ใช้เพิ่มเติม

<?php
$file = 'my-image.jpg';
$extension = strrchr( $file , '.' );
 
switch( $extension )
{
	case '.jpg':
		echo 'รูปภาพยอมให้อัปโหลด';
		break;
	case '.pdf':
		echo 'ไฟล์ pdf ไม่ให้อัป';
		die();
	case '.png':
		echo 'รูปภาพยอมให้อัปโหลด';
		break;
	case '.gif':
		echo 'รูปภาพยอมให้อัปโหลด';
		break;
	default :
		echo 'นามสกุลของไฟล์ไม่อยู่ในรายการตรวจสอบ';		
		die();
}
?>

คำสั่งนี้ยังสามารถประยุกต์ได้อีกมากมาย ลองคิดๆดูว่า เอาไปทำไรได้บ้าง เช่น เอาไปดึงโดเมนของอีเมล์ และอีกเยอะแยะครับ

ข้อมูลเพิ่มเติม

PHP strrchr() Function

Definition and Usage

The strrchr() function finds the position of the last occurrence of a string within another string, and returns all characters from this position to the end of the string.

Syntax
strrchr(string,char)

string Required. Specifies the string to search
char Required. Specifies the string to find. If this is a number, it will search for the character matching the ASCII value of that number

If char cannot be found, this function returns FALSE.

ลองอ่านแนวความคิดแบบอื่น

Upload File อย่างปลอดภัย เช็คจากประเภทของไฟล์ หรือนามสกุลของไฟล์ดี