Post on 19-Jan-2016
description
CHAPTER 7String Functions andRegular Expression
2PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
Agenda
• ฟั�งก�ช�นเก� ยวิก�บข้#อควิาม (String Functions)• น�พิจน�ปกต� (Regular Expression)
3PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
การต�ดช�องวิ�างในสตร�ง
- trim(ข้#อควิาม) ส'าหร�บต�ดช�องวิ�างท�(งหมดท� อย)�ด#านหน#าแลัะด#านหลั�งข้องสตร�งท�(งไป
- ltrim(ข้#อควิาม) ต�ดช�องวิ�างท� อย)�ด#านหน#า(ทางซ้#าย ) ท�(งไป
- chop(ข้#อควิาม) ต�ดช�องวิ�างท� อย)�ด#านหลั�ง (ทางข้วิา ) ท�(งไป
ฟั�งก�ช�นเก� ยวิก�บข้#อควิาม
ข้#อควิามท� อย)�ในวิงเลั-บ อาจเป.นข้#อควิามจร�งๆ หร0อเป.นต�วิแปรสตร�งก-ได# หากเป.นข้#อควิามจร�ง ๆ ให#เข้�ยนใน “ ”
4PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
<?$str1 =" Computer Science\n\n";print "String1 = ".$str1."<br>";echo "Length of String1 =".strlen($str1)."<br>";$str2 = trim($str1);echo "Length of String2 =".strlen($str2)."<br>";?>
trim()
5PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
<?$str1 =" Computer Science\n\n";print "String1 = ".$str1."<br>";echo "Length of String1 =".strlen($str1)."<br>";$str2 = ltrim($str1);echo "Length of String2 =".strlen($str2)."<br>";?>
ltrim()
6PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
<?$str1 =" Computer Science\n\n\n";print "String1 = ".$str1."<br>";echo "Length of String1 =".strlen($str1)."<br>";$str2 = chop($str1);echo "Length of String2 =".strlen($str2)."<br>";?>
chop()
7PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
<?$str =" Computer\n Science\nChiang Mai\n\n";print "String = ".$str."<br>";echo “use nl2br() <br>";echo "String = ".nl2br($str);?>
nl2br() เปลั� ยน \n ให#เป.น <br>
8PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
การเปลั� ยนร)ปแบบข้องต�วิอ�กษรฟั�งก์�ชั�น คำ�อธิ�บ�ย
strtoupper(ข้�อคำว�ม)strtolowar(ข้�อคำว�ม)ucfirst(ข้�อคำว�ม)
ucwords(ข้�อคำว�ม)
แปลงประโยคำให้�เป�นตั�วพิ�มพิ�ให้ญ่"แปลงประโยคำให้�เป�นตั�วพิ�มพิ�เล#ก์แปลงตั�วอ�ก์ษรตั�วแรก์ข้องประโยคำให้�เป�นตั�วพิ�มพิ�ให้ญ่"แปลงตั�วอ�ก์ษรตั�วแรก์ข้องคำ�ให้�เป�นตั�วพิ�มพิ�ให้ญ่"
ต�วิอย�างค'าส� ง$str = “Please ENTER your name”;strtoupper($str);strtolower($str);ucfirst($str);ucwords($str);
9PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
การเปร�ยบเท�ยบ น�บอ�กษร หาต'าแหน�ง สลั�บ แลัะซ้'(าข้#อควิามฟั�งก์�ชั�น คำ�อธิ�บ�ย
strcmp(ข้�อคำว�ม1,ข้�อคำว�ม2)
strlen(ข้�อคำว�ม)
strpos(ข้�อคำว�ม,อ�ก์ษร)
stripos(ข้�อคำว�ม,อ�ก์ษร)
strrpos(ข้�อคำว�ม,อ�ก์ษร)
strripos(ข้�อคำว�ม,อ�ก์ษร)
str_repeat(ข้�อคำว�ม,จำ�นวน)
เปร&ยบเที&ยบข้�อคำว�มที�(งสองว"�เห้ม*อนก์�นห้ร*อไม"
น�บจำ�นวนตั�วอ�ก์ษรในข้�อคำว�ม
ห้�ตั�แห้น"งอ�ก์ษรในข้�อคำว�ม โดยถื*อว"�อ�ก์ษรให้ญ่"เล#ก์ตั"�งก์�น ตั�แห้น"งแรก์ส/ดน�บเป�น 0 ถื��ไม"พิบจำะได�ผลล�พิธิ�เป�น False
เห้ม*อนก์�บ strpos แตั"อ�ก์ษรให้ญ่"เล#ก์ถื*อว"�เห้ม*อนก์�น
ห้�ว"�ตั�แห้น"งส/ดที��ยข้องอ�ก์ษรน�(นอย1"ตัรงไห้น โดยถื*อว"�อ�ก์ษรให้ญ่"เล#ก์ตั"�งก์�น
เห้ม*อนก์�บ strrpos แตั"อ�ก์ษรให้ญ่"เล#ก์ถื*อว"�เห้ม*อนก์�น
ส�ห้ร�บสร��งข้�อคำว�มซ้ำ(�ก์�นห้ล�ย ๆ คำร�(งเที"�ก์�บจำ�นวนคำร�(งที&4ระบ/
10PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
การต�ดข้#อควิามบางส�วินออกมาใช#ฟั�งก์�ชั�น คำ�อธิ�บ�ยstrstr(ข้�อคำว�ม,อ�ก์ษร)
stristr(ข้�อคำว�ม,อ�ก์ษร)
strrchr(ข้�อคำว�ม,อ�ก์ษร)
substr(ข้�อคำว�ม,start,length)
ห้�อ�ก์ษร โดยถื*อว"�อ�ก์ษรให้ญ่"เล#ก์ตั"�งก์�น เม*4อพิบแล�วเร�4มตั�ดเอ�ข้�อคำว�มตั�(งแตั"อ�ก์ษรน�(นไปจำนจำบ
เห้ม*อนก์�บ strstr แตั"อ�ก์ษรให้ญ่"เล#ก์ถื*อว"�เห้ม*อนก์�น
ห้�อ�ก์ษรเร�4มจำ�ก์ที��ยเข้��ม� โดยถื*อว"�อ�ก์ษรให้ญ่"เล#ก์ตั"�งก์�น เม*4อพิบแล�วตั�ดเอ�ข้�อคำว�มตั�(งแตั"ตั�วอ�ก์ษรน�(นไปจำนจำบข้�อคำว�ม
ตั�ดข้�อคำว�มโดยเอ�ตั�(งแตั"ตั�แห้น"ง start (อ�ก์ษรตั�วแรก์ถื*อเป�นตั�แห้น"งที&4 0 ) และน�บไปตั�มจำ�นวนที&4ตั�องก์�ร (length)
11PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
น�พิจน�ปกต� (Regular Expression)
regular expression ใช#ส'าหร�บการเปร�ยบเท�ยบแลัะ แทนท� ข้#อม)ลัแบบสตร�ง ซ้2 งคลั#ายก�บการใช#ฟั�งก�ช�น
เปร�ยบเท�ยบแลัะแทนท� ข้องสตร�ง แต� regular expression จะสามารถก'าหนดร)ปแบบข้องสตร�งได#มากกวิ�า เพิ0 อใช#ใน
การค#นหาสตร�งท� ใกลั#เค�ยงก�นได# โดยใช#ร)ปแบบ(pattern) ส'าหร�บตรวิจสอบหลั�ก ๆ ด�งน�(
^ ก'าหนดให#เป.นจ5ดเร� มต#นข้#อควิาม$ ก'าหนดให#เป.นจ5ดส�(นส5ดข้#อควิาม[A-Z] หมายถ2งต�วิอ�กษร A ถ2ง Z[a-z] หมายถ2งต�วิอ�กษร a ถ2ง z[0-9] หมายถ2งต�วิเลัข้ 0 -9
12PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
ฟั�งก�ช�นส'าหร�บตรวิจสอบค�าสตร�ง
ฟั�งก�ช�นการค#นหาสตร�งย�อย - ereg(pattern,ข้#อควิาม) ใช#ส'าหร�บตรวิจสอบข้#อควิามแลัะต�วิอ�กษร ฟั�งก�ช�นจะต�ควิามต�วิอ�กษรพิ�มพิ�ใหญ่�แลัะต�วิอ�กษรพิ�มพิ�เลั-กแตกต�างก�น
- eregi(pattern,ข้#อควิาม) ใช#ส'าหร�บการตรวิจสอบข้#อควิามแลัะต�วิอ�กษร โดยจะต�ควิามต�วิอ�กษรพิ�มพิ�ใหญ่�แลัะต�วิพิ�มพิ�เลั-กเหม0อนก�น
13PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
ต�วิอย�าง: การตรวิจสอบรห�สไปรษณ�ย�
<? $zip = “10220”;if (!ereg(^[0-9] [0-9] [0-9] [0-9] [0-9]$)) echo “<br>$zip ผิ�ดร)ปแบบ กลั�บไปแก#ไข้ใหม�”;else echo “<br>$zip ถ)กต#อง”;?>
ลัองเปลั� ยนค�าต�วิแปร $zip เป.นค�าต�าง ๆ
10220 ถ)กต#องK1022 ผิ�ดร)ปแบบ กลั�บไปแก#ไข้ใหม�
1022 ผิ�ดร)ปแบบ กลั�บไปแก#ไข้ใหม�
14PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
ต�วิอย�าง
<? $str1 = "Computer Science, Chiang mai";$str2 = "computer science, Chiang Mai";$com = "Chiang mai";echo "Comparision string1<br>";if (ereg($com,$str1)) echo "Found String<br>";else echo "Not found <br>";echo "Comparision string2<br>";if (ereg($com,$str2)) echo "Found String<br>";else echo "Not found <br>";echo "Comparision string2 with eregi<br>";if (eregi($com,$str2)) echo "Found String<br>";else echo "Not found <br>";?>
15PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
ฟั�งก�ช�นการแทนท� สตร�งย�อย
- ereg_replace(pattern,ค'าใหม�,ข้#อควิาม) ใช#ส'าหร�บแทนท� ข้#อควิามแลัะต�วิอ�กษร ฟั�งก�ช�นจะต�ควิามต�วิอ�กษรพิ�มพิ�ใหญ่�แลัะต�วิอ�กษรพิ�มพิ�เลั-กแตกต�างก�น
- eregi_replace(pattern,ค'าใหม�,ข้#อควิาม) ใช#ส'าหร�บแทนท� ข้#อควิามแลัะต�วิอ�กษร โดยจะต�ควิามต�วิอ�กษรพิ�มพิ�ใหญ่�แลัะต�วิพิ�มพิ�เลั-กเหม0อนก�น
16PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
การแทนท� ค'าในข้#อควิามฟั�งก์�ชั�น คำ�อธิ�บ�ยstr_replace(คำ�เด�ม,คำ�ให้ม",ข้�อคำว�ม)
stri_replace(คำ�เด�ม,คำ�ให้ม",ข้�อคำว�ม)
ereg_replace(pattern,คำ�ให้ม",ข้�อคำว�ม)
eregi_replace(pattern,คำ�ให้ม",ข้�อคำว�ม)
เปล&4ยนคำ�ในข้�อคำว�ม โดยแทีนที&4คำ�เด�มด�วยคำ�ให้ม" และถื*อว"�อ�ก์ษรเล#ก์ให้ญ่"ตั"�งก์�น
เห้ม*อน str_replace แตั"จำะถื*อว"�อ�ก์ษรเล#ก์ให้ญ่"เห้ม*อนก์�น
ตัรวจำสอบข้�อคำว�ม ห้�ก์ส"วนใดที&4ตัรงก์�บ pattern ให้�เปล&4ยนแทีนที&4ด�วยคำ�ให้ม" โดยถื*อว"�อ�ก์ษรเล#ก์ให้ญ่"ตั"�งก์�น
เห้ม*อน ereg_replace แตั"แตั"จำะถื*อว"�อ�ก์ษรเล#ก์ให้ญ่"เห้ม*อนก์�น
17PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
ต�วิอย�าง<? $str = “ เด�นย�งกะควิาย ควิาย ควิาย";echo “<br> ก�อน: $str";$str=str_replace(“ควิาย”, “***”,$str);echo “<br> หลั�ง: $str";?>
ผิลัลั�พิธ์�ก�อน: เด�นย�งกะควิาย ควิาย ควิายหลั�ง: เด�นย�งกะ*** *** ***
ส'าหร�บ str_replace แลัะ stri_replace เหมาะส'าหร�บการค#นหาค'าแบบ ตรง ๆ เพิ0 อเปลั� ยนเข้#าไปแทนท� เช�น เซ้-นเซ้อร�ค'าไม�ส5ภาพิ ส�วิน
ereg_replace แลัะ eregi_replace เหมาะส'าหร�บการค#นหาในลั�กษณะ เปร�ยบเท�ยบร)ปแบบ pattern ท� ซ้�บซ้#อนกวิ�า
18PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
ฟั�งก�ช�นการแบ�งสตร�งแลั#วิเอาไปเก-บไวิ#ในอาร�เรย�
- split(pattern,ข้#อควิาม) ใช#ส'าหร�บแบ�งสตร�งแลั#วิไปเก-บไวิ#ในอาร�เรย� โดยจะต�ควิามต�วิอ�กษรพิ�มพิ�ใหญ่�แลัะต�วิพิ�มพิ�เลั-กต�างก�น
- spliti(pattern,ข้#อควิาม) ใช#ส'าหร�บแบ�งสตร�ง โดยจะต�ควิามต�วิอ�กษรพิ�มพิ�ใหญ่�แลัะต�วิพิ�มพิ�เลั-กเหม0อนก�น
19PHP ภาควิ�ชาวิ�ทยาการคอมพิ�วิเตอร� คณะวิ�ทยาศาสตร� มหาวิ�ทยาลั�ยเช�ยงใหม�
ต�วิอย�าง
<? $str1 = "Computer Science, Chiang mai";echo "before substring<br>";echo "after substring<br>";$array1 = split(" ",$str1);for ($i=0;$i<count($array1);$i++) echo "array1[$i]=$array1[$i]<br>";
echo "after substring with c<br>"; $array3 = spliti("c",$str1);for ($i=0;$i<count($array3);$i++) echo "array3[$i]=$array3[$i]<br>";?>