การเขียนโปรแกรมภาษา PHP

            
               

ตัวอย่างฟังก์ชั่นอื่น ๆ


addslahes() จะทำการเพิ่มเครื่องหมาย \ (Back Slashes) ให้กับ String ที่มีสัญลักษณ์ ('), ("), (\) ดังตัวอย่างเช่น

<?
$text = "I'm Win.";
echo addslashes($text);
?>

Out Put
I\'m Win.
====================
chr()

<?
$text = "65";
echo chr($text);
?>

Out Put

A

=====================
ucwords()
<?
$text = "what is your name?";
echo ucwords($text);
?>

Out Put
What Is Your Name?
======================
ucfirst()
<?
$text = "what is your name?";
echo ucfirst($text);
?>

Out put

What is your name?
========================
str_replace()
<?
$text = "My Name is win";
$textnew = str_replace("win", "werachai",$text);
echo $textnew;
?>

Out put
My Name is weracha
=======================
explode()
<?
$a = "A B C D E F G H I";
$b = explode(" ", $a);
for($i=0;$i<count($b);$i++)
{
echo "$b[$i]<br>";
}
?>

Out Put
A
B
C
D
E
F
G
H
I
=========================
Function date

การอ่านค่าสำหรับบ่งบอกวันเดือนปีและเวลาในปัจจุบัน เราสามารถใช้คำสั่ง date () ตัวอย่างเช่น แสดงวันเดือนปีของวันนี้

รูปแบบ Function date
<?
$today=date("Y-M-d");
?>
<?
$today = date("D d F Y h:i:s");
print "<CENTER>Today is: $today.</CENTER>";
?>
"Y-m-d" หมายถึงสตริงค์ที่กำหนดรูปแบบ (formatted string) ของการแสดงวันที่ ในกรณีนี้คือ ปีค.ศ.-เดือน-วัน ตามลำดับ จริงๆแล้วฟังก์ชัน date() จะต้องการอาร์กิวเมนต์สองตัวคือ สตริงค์ที่กำหนดรูปแบบ เช่น "Y-m-d" และค่าของ TimeStamp (integer) ในหน่วยเป็นวินาที นับตั้งแต่ 1 มกราคม 1970 ในกรณีที่เราไม่ได้กำหนด TimeStamp ก็จะหมายถึง TimeStamp เวลาในปัจจุบัน
ถ้าเราต้องการแสดงทั้งเวลาและวันเดือนปี ก็ต้องกำหนดรูปแบบของสตริงค์ใหม่ เช่น "D d F Y h:i:s"
ซึ่งตัวอักษรแต่ละตัวจะมีความหมายและเป็นตัวบ่งบอกหน้าที่ เช่น d ใช้แทนที่วันในหนึ่งเดือน D ใช้แทนชื่อวันแบบย่อในเจ็ดวัน F ใช้แทนชื่อเดือนในทั้งหมด 12 เดือน Y แทนที่ปีค.ศ. เป็นเลขสี่หลัก
h i s ใช้แทนชั่วโมง นาที และวินาทีตามลำดับ

<?
$today = date("D d F Y h:i:s");
print "<CENTER>Today is: $today.</CENTER>";
?>

สำหรับรายอื่นเพิ่มเติมเกี่ยวกับฟังก์ชัน date() สามารถดูได้จาก PHP manual
Description Function date
a แสดงคำว่า am หรือ pm ในรูปแบบตัวพิมพ์เล็ก
A แสดงคำว่า AM หรือ PM ในรูปแบบตัวพิมพ์ใหญ่
d แสดงวันที่แบบเลข 2 หลัก คือ "01" ถึง "31"
D แสดงชื่อวันภาษาอังกฤษแบบย่อ เช่น "Sun" , "Fri" เป็นต้น
F แสดงชื่อเดือนภาษาอังกฤษเช่น "January"
h แสดงเวลาชั่วโมงแบบ 2 หลัก "01" ถึง "12"
H แสดงเวลาชั่วโมงแบบ 2 หลัก "00" ถึง "23"
g แสดงเวลาชั่วโมงแบบไม่มีเลข 0 นำหน้า "1" ถึง "12"
G แสดงเวลาชั่วโมงแบบไม่มีเลข 0 นำหน้า "0" ถึง "23"
i แสดงเวลานาที "00" ถึง "59"
j แสดงวันที่แบบไม่มีเลข 0 นำหน้า "1" ถึง "31"
l แสดงชื่อวันภาษาอังกฤษแบบเต็ม เช่น "Monday"
L แสดงค่าทางตรรกะ คือ มีค่า 0 หรือ 1 ในปีที่เป็นอธิกมาส
m แสดงเดือนแบบตัวเลขมีเลข 0 นำหน้า "01" ถึง "12"
n แสดงชื่อเดือนภาษาอังกฤษแบบย่อ 3 ตัวอักษร เช่น "Feb"
s แสดงเวลาวินาที "00" ถึง "59"
S แสดงส่วนต่อท้ายของวันที่ เช่น "th", "nd"
t แสดงจำนวนวันใน 1 เดือน
w แสดงตัวเลขของวันใน 1 สัปดาห์ เช่น "0" = Sunday ถึง "6" = Saturday
Y แสดงปี ค.ศ. ตัวเลข 4 หลัก เช่น "1990"
y แสดงปี ค.ศ. ตัวเลข 2 หลัก เช่น "90"
z แสดงลำดับวันใน 1 ปี คือตั้งแต่ "0" ถึง "365"
ตัวอย่าง Function date
<HTML>
<HEAD><TITLE>ตัวอย่างการ Function date</TITLE></HEAD>
<BODY>
<?
$today1=date("Y-M-d");
$today2=date("Y-m-D");
$today3=date("y-M-D");
print "$today1 <br>";
print "$today2 <br>";
print "$today3 <br>";
?>
</BODY>
</HTML>
ผลลัพธ์ที่ได้

2000-Apr-17
2000-04-Mon
00-Apr-Mon


การบวกหรือลบเวลาจากปัจจุบัน


$fullday = date("d M H:i:s", mktime(date("H")[บวก/ลบ][ชม.], date("i")[บวก/ลบ][นาที.]))."";

Sample

<?
$yea = date("Y")+543;
$fullday = date("d M $yea H:i:s", mktime(date("H")+11, date("i")+45)).""; // บวกเวลา 11 ชม. กับ 45 นาที
echo $fullday;
?>



getdate()
<?
&today = getdate();
$month = $today[month];
$mday = $today[mday];
$year = $today[year];
echo "$month $mday, $year";
?>
จาก Code ตัวแปร $today จะเป็นอาเรย์ที่มีสมาชิก
$today[secounds] เก็บค่าวินาที
$today[minutes] เก็บค่านาที
$today[hours] เก็บค่าชั่วโมง
$today[mday] เก็บค่าวันที่
$today[wday] เก็บลำดับของวันใน 1 สัปดาห์ เช่น "0" ถึง "6"
$today[weekday] เก็บชื่อวันในสัปดาห์ เช่น "Friday"
$today[yday] เก็บลำดับของวันใน 1 ปี คือตั้งแต่ "0" ถึง "365"
$today[mon] เก็บค่าเดือน
$today[month] เก็บชื่อเดือนแบบเต็ม เช่น "January"
$today[year] เก็บค่าปี
ลองมาดูวันที่แบบไทย ๆ บ้างครับ
Sample
<?
// ThaiCreate.Com By @W_IN //
$date = date("l");
switch($date)
{
case "Monday":
$printdate = "จันทร์";
break;
case "Tuesday":
$printdate = "อังคาร";
break;
case "Wednesday":
$printdate = "พุธ";
break;
case "Thursday":
$printdate = "พฤหัสบดี";
break;
case "Friday":
$printdate = "ศุกร์";
break;
case "Saturday":
$printdate = "เสาร์";
break;
case "Sunday":
$printdate = "อาทิตย์";
break;
}
$month = date("n");
switch($month)
{
case "1":
$printmonth = "มกราคม";
break;
case "2":
$printmonth = "กุมภาพันธ์";
break;
case "3":
$printmonth = "มีนาคม";
break;
case "4":
$printmonth = "เมษายน";
break;
case "5":
$printmonth = "พฤษภาคม";
break;
case "6":
$printmonth = "มิถุนายน";
break;
case "7":
$printmonth = "กรกฏาคม";
break;
case "8":
$printmonth = "สิงหาคม";
break;
case "9":
$printmonth = "กันยายน";
break;
case "10":
$printmonth = "ตุลาคม";
break;
case "11":
$printmonth = "พฤศจิกายน";
break;
case "12":
$printmonth = "ธันวาคม";
break;
}
echo "$printdate ".date("d")." $printmonth ".(date("Y")+543)."";
?>

Out Put
ศุกร์ 25 มิถุนายน 2547
การใช้ฟังก์ชันเพื่อสร้างตัวเลขแบบสุ่ม หรือ random number generator จะคล้ายกับของภาษาซี คือ เริ่มต้นด้วย srand () โดยจะต้องผ่านค่าที่เรียกว่า seed ซึ่งเป็นเลขจำนวนเต็มใดๆก็ได้ก่อน โดยทั่วไปจะใช้ค่าของเวลาในหน่วยวินาที หรือ Time Stamp ซึ่งสามารถอ่านได้จากฟังก์ชัน date("s") (s หมายถึง second หรือหน่วยวินาที) โดยผ่านค่านี้เป็นค่าของ seed จากนั้นจึงค่อยเรียกใช้ rand()
ตัวอย่างการใช้งาน

<?
srand( date("s") );
for ($i=0; $i < 10; $i++) {
$x = rand() % 10;
echo $x," ";
}
?>

คำสั่งนี้จะสร้างตัวเลขโดยการสุ่มเลือกเป็นจำนวน 10 ตัวเลข และพิมพ์ออกทางเอาพุต
ตัวอย่างการใช้งานเพิ่มเติมในรูปของฟังก์ชัน

<?
function randInt($low,$high) {
srand ( date("s") );
$range = $high - $low;
$num = (rand() % $range) + $low;
return $num;
}
?>

ตัวอย่างนี้จะสร้างตัวเลขโดยสุ่มที่อยู่ระหว่างเลขจำนวนเต็มสองค่า และเงื่อนไขของการใช้ฟังก์ชันนี้คือ $low จะต้องมีค่าน้อยกว่า $high และทั้งสองต้องเป็นเลขจำนวนเต็ม
ตัวอย่างการใช้งานเพิ่มเติมในรูปของฟังก์ชันเพิ่มเติม

<?
function randStr($len) {
srand ( date("s") );
for ($i=0; $i < $len; $i++) {
$ret_str .= chr( (rand() % 26)+97 );
}
return $ret_str;
}
echo randStr(40);
?>

ตัวอย่างนี้จะสร้างสตริงค์แบบสุ่มที่มีความยาวตามที่กำหนดและสร้างขึ้นจากตัวอักขระภาษาอังกฤษ
การสร้าง Password Random แบบง่าย ๆ
function random_password($len)
{
srand((double)microtime()*10000000);
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
$ret_str = "";
$num = strlen($chars);
for($i = 0; $i < $len; $i++)
{
$ret_str.= $chars[rand()%$num];
$ret_str.="";
}
return $ret_str;
}
// echo random_password(8);
$passw = random_password(7);
echo $passw;



ดูอีกตัวแล้วกันครับ


<?
function randomToken($len) {
srand( date("s") );
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$chars.= "1234567890!@#$%^&*()";
$ret_str = "";
$num = strlen($chars);
for($i=0; $i < $len; $i++) {
$ret_str.= $chars[rand()%$num];
}
return $ret_str;
}
echo randomToken(13)," ";
?>
ตัวอย่าง การหาค่าแฟลทอเรียล n!

<?
function factorial ($n) {
if ( ($n == 0) || ($n == 1) )
return 1;
else
return $n*factorial($n-1);
}
echo factorial(4);
?>

เงื่อนไขก็ใช้ฟังก์ชัน factorial() จากตัวอย่างข้างบน คือ $n จะต้องเป็นตัวแปรที่เก็บค่าที่เป็นเลขจำนวนเต็ม และไม่เป็นลบ ถ้าเราต้องการจะเขียนฟังก์ชันให้มีความปลอดภัยในการใช้งาน เราก็อาจจะเพิ่มเงื่อนไข เพื่อตรวจเช็คดูก่อนว่า ผู้ใช้ผ่านค่าของตัวแปรที่ตรงตามต้องการหรือไม่ เช่น ไม่ผ่านค่าที่เป็นสตริงค์ หรือเป็นเลขทศนิยม หรือค่าที่เป็นลบ เป็นต้น
ตัวอย่าง การค้นหาข้อมูลแบบ Binary Search ในอาร์เรย์ที่มีการเรียงข้อมูลจากน้อยไปมาก

<?
function binSearch(&$key,&$array, $left, $right)
{
$mid = ceil( ($left + $right) / 2 );
if ($left > $right)
return -1;
if ($array[$mid] == $key)
return $mid;
else if ($key < $array[$mid])
return binSearch($key, $array, $left, $mid-1); // recursive call
else
return binSearch($key, $array, $mid+1, $right); // recursive call
}
$num=100;
$key = randInt(0, $num);
for($i=0; $i < $num; $i++) {
$sorted_array[$i] = $i+1;
}
echo binSearch(13, $sorted_array, 0, $num);
?>
ตัวอย่าง การสร้างสตริงค์แบบสุ่มอีกแบบหนึ่งซึ่งอาจจะนำไปใช้ในการสร้าง one-time password ( OTP)

<?
function randomToken($len) {
srand( date("s") );
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$chars.= "1234567890!@#$%^&*()";
$ret_str = "";
$num = strlen($chars);
for($i=0; $i < $len; $i++) {
$ret_str.= $chars[rand()%$num];
}
return $ret_str;
}
echo randomToken(13)," ";
?>
หมายเหตุ: การกำหนดค่า seed สำหรับฟังก์ชัน srand() นอกจะใช้ date("s") เป็นตัวกำหนดค่าแล้ว เราอาจจะใช้ฟังก์ชันอื่นก็ได้ เช่น srand((double)microtime()*1000000);
สองฟังก์ชันแรกที่เราจะทำความรู้จักคือ ฟังก์ชัน strtolower() และ strtoupper() ซึ่งมีหน้าที่คือ เอาไว้แปลงตัวอักขระภาษาอังกฤษให้เป็นตัวพิมพ์เล็ก หรือตัวพิมพ์ใหญ่ทั้งหมด ตามตัวอย่างต่อไปนี้

<?
$answer = "Yes";
if ($answer == "yes")
echo "yes...\n";
else
echo "error!\n";
$answer = strtolower("Yes");
if ($answer == "yes")
echo "yes...\n";
else
echo "error!\n";
$answer = strtoupper("Yes");
if ($answer == "YES")
echo "YES...\n";
else
echo "error!\n";
?>

ประโยชน์ของฟังก์ชันทั้งสองที่เห็นได้ชัด คือ เอาไว้ใช้แปลงข้อความให้เป็นตัวพิมพ์ใหญ่หรือเล็กทั้งหมด ก่อนที่เราจะใช้ในการเปรียบเทียบข้อความ เช่น ผู้ใช้อาจจะใส่ข้อความไว้ใน $answer ว่า "Yes" "YeS" "yES" หรือ "YES" เป็นต้น แต่เราอยากรู้ว่า ผู้ใช้ใส่คำว่า yes หรือไม่ โดยไม่สนใจว่าจะเป็น ตัวพิมพ์ใหญ่หรือเล็ก ในกรณีนี้ เราก็แปลงให้เป็นตัวพิมพ์เล็กก่อน แล้วก็นำมาเปรียบเทียบ
สมมุติว่า มีสตริงค์หรือข้อความอยู่แล้วต้องการจะแยกออกเป็นส่วนย่อยๆโดยใช้ตัวอักขระ หรือสตริงค์ที่มีอยู่ข้างในเป็นตัวแยก เราจะใช้ฟังก์ชัน explode() ตามตัวอย่างต่อไปนี้

<?
$str = "ohh:users:bash";
list($user,$group,$shell) = explode(":",$str);
echo "$user $group $shell";
?>

จากตัวอย่างข้างบนเราใช้ ":" เป็นตัวแยกส่วนของข้อความว่า "ohh:users:/bash" และค่าที่ได้จากฟังก์ชัน explode() จะเป็น array ดังนั้น เราก็สามารถใช้ฟังก์ชัน list() เก็บส่วนของข้อความที่ถูกแยกแล้วได้
ในกรณีนี้มีสามส่วนและถูกแยกเก็บไว้ในตัวแปร $user $group และ $shell ตามลำดับ

TOP