บทเรียนอื่นๆ

บทเรียน สอนการใช้ คอมพิวเตอร์พื้นฐาน สอน การใช้งานตั้งค่า internet

ให้เรตสมาชิก: 3 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

ขั้นตอน วิธีการติดตั้ง Xampp ไว้จำลอง Web Server

ขั้นแรกต้องดาวน์โหลดโปรแกรม Xampp มาก่อน สามารถดาวน์โหลดได้ ที่นี่
ขั้นแรกต้องดาวน์โหลด xampp มาก่อน จะอยู่ในรูปแบบของ .zip, .tar, .7z และ .exe ในที่นี้จะดาวน์โหลดเป็น .exe เมื่อดาวน์โหลดมาแล้วให้ดับเบิ้ลคลิ๊กไฟล์เพื่อทำการติดตั้ง จะปรากฎหน้าต่าง
1.ขั้นแรกต้องดาวน์โหลด xampp มาก่อน จะอยู่ในรูปแบบของ Zip, .tar, .7z และ .exe ในที่นี้จะดาวน์โหลดเป็น .exe เมื่อดาวน์โหลดมาแล้วให้ดับเบิ้ลคลิ๊กไฟล์เพื่อทำการติดตั้ง จะปรากฎหน้าต่าง
จะปรากฎหน้าต่าง Welcome to Xampp v. ....  setup wizard คลิ๊ก Next เพื่อเริ่มการติดตั้ง
2.จะปรากฎหน้าต่าง Welcome to Xampp v. ....  setup wizard คลิ๊ก Next เพื่อเริ่มการติดตั้ง
จะปรากฎหน้าให้เลือกติดตั้ง Components ทั้ง Xampp, Server, Program Languages, Tools  แล้วคลิ๊ก Next
3.จะปรากฎหน้าให้เลือกติดตั้ง Components ทั้ง Xampp, Server, Program Languages, Tools  แล้วคลิ๊ก Next
เลือกโฟลเดอร์ที่ใช้ในการติดตั้ง โดยคลิ๊กปุ่ม Browse แล้วเลือกโฟลเดอร์ปลายทางแล้วคลิ๊ก Install
4.เลือกโฟลเดอร์ที่ใช้ในการติดตั้ง โดยคลิ๊กปุ่ม Browse แล้วเลือกโฟลเดอร์ปลายทางแล้วคลิ๊ก Install
รอสักครู่ โปรแกรมกำลังติดตั้ง อาจจะใช้เวลาสักพัก
5.รอสักครู่ โปรแกรมกำลังติดตั้ง อาจจะใช้เวลาสักพัก
 
เมื่อโปรแกรมติดตั้งเรียบร้อยแล้วจะขึ้นว่า Completeing the XAMPP v..... setup wizard คลิ๊ก finish สิ้นสุดการติดตั้ง
6.เมื่อโปรแกรมติดตั้งเรียบร้อยแล้วจะขึ้นว่า Completeing the XAMPP v..... setup wizard คลิ๊ก finish สิ้นสุดการติดตั้ง
จะมีหน้าต่างปรากฎการเริ่มใช้งาน Xampp Contol Panel หากต้องการคลิ๊ก Yes หากไม่ต้องการคลิ๊ก No ในที่นี้จะคลิ๊ก Yes
7.จะมีหน้าต่างปรากฎการเริ่มใช้งาน Xampp Contol Panel หากต้องการคลิ๊ก Yes หากไม่ต้องการคลิ๊ก No ในที่นี้จะคลิ๊ก Yes
จะปรากฎหน้าต่าง Xampp Control Panel ขึ้นมา คลิ๊ก Start ในส่วนของ Apache กับ MySQL
8.จะปรากฎหน้าต่าง Xampp Control Panel ขึ้นมา คลิ๊ก Start ในส่วนของ Apache กับ MySQL
จากนั้นเปิด Browser ขึ้นมา ในส่วนของ address bar พิมพ์ localhost เข้าสู่หน้าการใช้งาน
9.จากนั้นเปิด Browser ขึ้นมา ในส่วนของ address bar พิมพ์ localhost เข้าสู่หน้าการใช้งาน
 
 
วิดีโอสอนวิธีการติดตั้งโปรแกรม Xampp อย่างละเอียด ใช้งานได้จริง

ให้เรตสมาชิก: 3 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

การสร้างไฟล์ ZIP ใน Joomla Component

การสร้างไฟล์ ZIP ใน Joomla Component
การสร้างไฟล์ ZIP ใน Joomla Component

ไฟล์รูป 2 รูปที่จะ zipไฟล์ที่ใช้ในคอมโพเน้นท์1. โค็ดของไฟล์ admin.test.php2. โค็ดของไฟล์ controller.php3. โค็ดของไฟล์ controllers/zip.phpบรรทัดที่ 6-7 : กำหนด path ขของไฟล์ที่จะ zip ในตัวแปร array บรรทัดที่ 8 : กำหนด path ของไฟล์ zip และใช้ชื่อ myzip.zip? ?4. โค็ดของไฟล์ models/zip.php?บรรทัดที่ 3-5 : นำเข้าไฟล์ต่างๆ ที่ใช้ในคอมโพเน้นท์ บรรทัดที่ 9 : สร้างเมธอดชื่อ zip $all_file_paths เก็บ path ของไฟล์ต่างๆที่จะนำมา zip $zip_destination path ของไฟล์ zip บรรทัดที่ 11-17 : นำตัวแปร $all_file_paths มาวนลูปเพื่อกำหนด pathใหม่และเก็บข้อมูลของไฟล์ไว้ในตัวแปร $file_to_zip บรรทัดที่ 18 : กำหนด adepter เป็น zip บรรทัดที่ 19 : สร้างไฟล์ zipwww.mindphp.com

ให้เรตสมาชิก: 1 / 5

ดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

หลักการ เขียน php แบบ oop
OOP และ PHP: ตัวอย่างจากรูปสี่เหลี่ยม

ความรู้พื้นฐาน? HTML และ PHP เบื้องต้น

PHP OOP เป็นการเขียน??โปรแกรมเชิงวัตถุ ที่กำลังเป็นที่นิยมอย่างแพร่หลาย โปรแกรม ASP ในปัจจุบันได้เปลี่ยนโฉมจาก ภาษา script เป็น ASP.NET ซึ่งเป็นโปรแกรมเชิงวัตถุอย่างสมบูรณ์ PHP ก็เช่นเดียวกัน เพราะ OOP ช่วยให้เขียนโปรแกรมได้อย่างสง่างาม ตรวจสอบได้ง่าย สามารถนำโค้ดที่เขียนไว้ กลับมาใช้ใหม่ได้อย่างประหยัด จึงสมควรอย่างยิ่งที่จะต้องทำความเข้าใจเรื่องของ OOP เพื่อเป็นพื้นฐานในการเขียนโปรแกรมขั้นสูงต่อไป
ในบทความนี้ จะพูดถึงหลักการของ OOP ที่ใช้ใน โปรแกรม PHP
ทุกคนคงเคยเรียนเรื่องการหาพื้นที่สี่เหลี่ยมมาแล้ว สูตรการหาพื้นที่ คือ ความยาว X ความสูง ถ้าจะคำนวณหาเส้นรอบรูปก็เอาความยาวกับความสูงคูณด้วย 2 แล้วเอามาบวกกัน ทีนี้สมมติว่า ต้องการเขียนโปรแกรมบนเว็บ ให้คำนวณพื้นที่สี่เหลี่ยม โดยใช้ PHP วิธีที่ง่ายที่สุด คือ การสร้างฟอร์มเพื่อรับค่าความยาว และ ความสูง แล้วใช้ PHP ให้คำนวณหาพื้นที่ ซึ่งจะได้โค้ด ดังนี้
ใช้ HTML สร้างฟอร์มเพื่อรับค่าความยาวและความสูง บันทึกและตั้งชื่อไฟล์ว่า rectangle.html



ความยาว:

ความสูง:

ส่งข้อมูล ">



จากนั้นก็จะสร้างไฟล์ PHP เพื่อรับข้อมูลจาก rectangle.html โดยใช้ชื่อว่า rectangle.php ดังนี้

$w=$_POST["width"];???? //รับค่าจากไฟล์ html
$h=$_POST["height"];
$area = $w * $h; ?? // คำนวนพื้นที่
$perimeter = ($w + $h) * 2;?? // คำนวนเส้นรอบรูป
?>


ความยาว:

ความสูง:

พื้นที่: ตารางหน่วย

เส้นรอบรูป:


จากตัวอย่างข้างต้นแทนที่จะเขียนโปรแกรมให้คำนวณทุกครั้ง อาจจะเขียนเป็นฟังชั่น ให้คำนวณหาพื้นที่และเส้นรอบรอบ แล้วเรียกใช้เมื่อต้องการ
ตัวอย่างต่อไปนี้ เราจะสร้างฟังชั่นเพื่อให้คำนวณพื้นที่และเส้นรอบรูปสี่เหลี่ยม โดยจะสร้างไฟล์ใหม่ใช้ชื่อว่า rect.php ในไฟล์นี้ เราจะเขียนฟังชั่นดังกล่าว ดังนี้
function rect_area($width,$height)
{
return $width * $height;
}
function rect_perim($width,$height)
{
return ($width + $height) * 2;
}
?>
บันทึกไว้ ในไฟล์ชื่อ rect.php
เราจะเรียกใช้ฟังชั่นนี้จากไฟล์ rectangle.php แต่จะแก้ไขใหม่ ไม่ต้องมีการคำนวณ แต่จะเรียกใช้ฟังชั่นจาก rect.php ดังนี้
require('rect.php'); // โหลดไฟล์ที่มีฟังชั่นที่เราสร้างแล้ว
$w=$_POST["width"];
$h=$_POST["height"];
$area = rect_area($w,$h);? //เรียกใช้ฟังชั่น คำนวณพื้นที่
$perimeter = rect_perim($w,$h);? // เรียกใช้ฟังชั่นคำนวณเส้นรอบรูป
?>
แสดงผล? --
จากตัวอย่างข้างต้นแทนที่จะเขียนโปรแกรมให้คำนวณทุกครั้ง อาจจะเขียนเป็นฟังชั่น ให้คำนวณหาพื้นที่และเส้นรอบรอบ แล้วเรียกใช้เมื่อต้องการ ตัวอย่างต่อไปนี้ เราจะสร้างฟังชั่นเพื่อให้คำนวณพื้นที่และเส้นรอบรูปสี่เหลี่ยม โดยจะสร้างไฟล์ใหม่ใช้ชื่อว่า rect.php ในไฟล์นี้ เราจะเขียนฟังชั่นดังกล่าว ดังนี้function rect_area($width,$height) { ?????????????????? return $width * $height; } function rect_perim($width,$height) { return ($width + $height) * 2; } ?>บันทึกไว้ ในไฟล์ชื่อ rect.phpเราจะเรียกใช้ฟังชั่นนี้จากไฟล์ rectangle.php แต่จะแก้ไขใหม่ ไม่ต้องมีการคำนวณ แต่จะเรียกใช้ฟังชั่นจาก rect.php ดังนี้????????? require('rect.php'); // โหลดไฟล์ที่มีฟังชั่นที่เราสร้างแล้ว$w=$_POST["width"];$h=$_POST["height"];$area = rect_area($w,$h);? //เรียกใช้ฟังชั่น คำนวณพื้นที่$perimeter = rect_perim($w,$h);? // เรียกใช้ฟังชั่นคำนวณเส้นรอบรูป?> ???????????????? แสดงผล? -->

ความยาว:?
ความสูง:
พื้นที่:?
เส้นรอบรูป:




การเขียนโปรแกรมเชิงวัตถุ หรือ OOP คล้ายกับฟังชั่น เพียงแต่เราจะสร้างวัตถุต้นแบบ หรือภาษาของ PHP เรียกว่า CLASS เช่น เราอาจจะสร้าง วัตถุที่เรียกว่า Rectangle โดยให้มันมีการคำนวณหาพื้นที่ และคำนวณหาเส้นรอบรูป ดังนั้น ถ้าเราเรียกใช้ Rectangle และส่งค่า ความยาวและความสูงให้ เราสามารถเรียกค่าพื้นที่ และค่าความยาวเส้นรอบรูปได้เลย
เราจะปรับไฟล์ rect.php เสียใหม่ เพื่อให้ไฟล์นี้ สร้าง CLASS ที่ชื่อว่า Rectangle ดังนี้


class Rectangle
{
var $width;
var $height;

function Rectangle($width, $height)
{
$this->width = $width;
$this->height = $height;
}

function area()
{
return $this->width * $this->height;
}

function perimeter()
{
return ($this->width + $this->height) * 2;
}
}
?>
เรามาดูรายละเอียดทีละบรรทัด
เราเริ่มจากการบอกว่า ต่อไปนี้เราจะสร้างแม่แบบ หรือ CLASS ที่ชื่อว่า Rectangle

class Rectangle
{


ชื่อของ CLASS เรามักจะขึ้นต้นด้วยอักษรตัวใหญ่ PHP ไม่บังคับว่าจะต้องเป็นตัวใหญ่ แต่ทำให้เหมือน ๆ กับชาวบ้านก็จะดี เพราะจะเข้าใจกันได้ง่ายขึ้น
ต่อมาเรา ประกาศชื่อตัวแปร คือ $width และ $height


var $width;
var $height;


นี่เป็นการประกาศตัวแปรที่อยู่ในวัตถุที่เรากำลังสร้าง เท่ากับเป็นการพูดว่า เจ้าสี่เหลี่ยมที่จะสร้างขึ้นจากแม่แบบ (CLASS) อันนี้ทุกรูป จะมีความยาว และความสูง ลักษณะที่กำหนดให้วัตถุอย่างนี้ ศัพท์ทาง PHP เรียกว่าเป็น Properties คือหมายถึง คุณสมบัติของวัตถุหรือ Object ซึ่งในที่นี้ก็คือรูปสี่เหลี่ยมที่เกิดจากแม่แบบที่เรากำลังสร้างนี้ทุกรูป ที่จะต้องมี? นั่นคือ รูปสี่เหลี่ยมที่เกิดจากแม่แบบ หรือ CLASS นี้ทุกรูป จะมีความกว้างและความยาว
ต่อจากนั้นก็เป็นการสร้างฟังชั่น ให้คำนวณ หาพื้นที่

function Rectangle($width, $height)
{


ขอให้สังเกตว่า ชื่อฟังชั่น Rectangle เป็นชื่อเดียวกับชื่อของแม่แบบ หรือ CLASS พร้อมทั้งกำหนดตัวแปรเอาไว้ด้วย 2 ตัว คือ $width และ $height? ฟังชั่นที่มีชื่อเดียวกับชื่อ CLASS นี้ เราเรียกว่าเป็น ตัวสร้าง หรือ constructor
หน้าที่หลักของ constructor คือการกำหนดค่าต่าง ๆ ให้วัตถุ และพร้อมที่จะเรียกใช้งาน ในกรณีของเรา เราจะกำหนดค่า ความยาวและความสูงให้แก่ constructor ของเรา ดังนี้
$this->width = $width;
$this->height = $height;
ตัวแปร $this ในที่นี้หมายถึง วัตถุที่เรากำลังสร้างขึ้น ดังนั้น $this->width = $width;
จึงหมายถึง ความกว้างของวัตถุที่เรากำลังสร้างขึ้นนี้ เท่ากับ ตัวแปรความกว้าง(ที่กำหนดไว้ข้างต้น ซึ่งเป็นตัวแปรที่รับค่าที่ส่งเข้ามา)
เครื่องหมาย -> แสดงความเป็นเจ้าของ เช่น $this->width หมายถึง ความกว้างของวัตถุที่เรากำลังสร้างขึ้นนี้
ต่อจากนั้นก็เป็นฟังชั่นการหาพื้นที่และคำนวณเส้นรอบรูป
function area()
{
return $this->width * $this->height;
}

function perimeter()
{
return ($this->width + $this->height) * 2;
}


ดูเผิน ๆ ฟังชั่นนี้คล้ายกับฟังขั่น rect_area และ rect_perim เพียงแต่เราไม่ได้ส่งค่าอะไรไปให้เท่านั้น เพราะค่าความยาวและความสูงของวัตถุที่เรากำลังสร้างมีอยู่แล้ว เรียกใช้ได้ทันที
ฟังชั่นของวัตถุที่มีอยู่ประจำตัวในลักษณะนี้ เราเรียกว่าเป็น methods หรือวิธีการ ซึ่งเป็นการคำนวณหาค่าต่าง ๆ โดยใช้คุณสมบัติหรือ properties ของวัตถุที่มีอยู่
ทั้งหมดที่กล่าวมา เป็นการวางแม่แบบว่า จะใช้สร้างรูปสี่เหลี่ยมที่มีคุณสมบัติ (properties) 2 ประการคือ ความกว้างและความสูง และสี่เหลี่ยมที่สร้างนี้ จะมีวิธีการ (methods) ให้คำนวณหาค่าพื้นที่ และค่าความยาวรอบรูป
แต่นั่นเป็นเพียงแค่แม่แบบ ยังไม่ใช่ตัวจริง การเรียกใช้แม่แบบ เรียกได้ดังนี้
new Rectangle(20, 5)
เราใช้คำว่า new เพื่อบอก PHP ว่า ให้สร้างวัตถุใหม่(new object) จากแม่แบบ (class) ที่ชื่อว่า Rectangle พร้อมกันนั้นเราก็ส่งค่า ความยาว และ ความสูง ไปให้ด้วย เพราะเป็นคุณสมบัติที่สี่เหลี่ยมที่เรากำหนดว่าจะต้องมีคุณสมบัตินี้ ค่าที่ส่งไปคือ ความกว้าง 20 และความสูง = 5
วัตถุที่เราสร้างจากแม่แบบ Rectangle ต้องมีชื่อ เราจะเอาวัตถุใหม่ที่สร้างมาไว้ในตัวแปรวัตถุขอบเรา ซึ่งจะใช้ชื่อว่า $myRectangle ดังนี้
$myRectangle = new Rectangle(20, 5);
ถ้าต้องการเปลี่ยนค่าความกว้าง ก็สามารถทำได้เลย เช่น ต้องการเปลี่ยนค่าความกว้างเป็น 50 ทำดังนี้
$myRectangle -> width = 50;
ถ้าต้องการหาพื้นที่ ก็สั่งได้โดยตรง เพราะรูปสี่เหลี่ยมใหม่ของเรา คือ myRectangle มีวิธีการหาพื้นที่อยู่แล้ว เพราะสร้างมาจากแม่แบบที่เรากำหนดไว้ตอนแรก
echo $myRectangle -> area();? // ในที่นี้จะพิมพ์ 250 คือ กว้าง 50 และสูง = 5
เราสามารถสร้างสี่เหลี่ยมและหาพื้นที่ได้อีกหลาย รูป เช่น
$rectangle1 = new Rectangle(10,20);
$rectangle2 = new Rectangle(30,40);
echo $rectangle1 ->area(); // ได้ค่า '200'
echo $rectangle2->perimeter(); // ได้ค่า '140'
เพื่อให้เห็นภาพรวมทั้งหมด จะเปลี่ยนไฟล์เดิมคือ rectangle.php ให้สร้างรูปสี่เหลี่ยมจากแม่แบบ และให้พิมพ์ค่าพื้นที่ พร้อมทั้งเส้นรอบรูป ดังนี้
require('rect.php');
$w = $_POST["width"];
$h = $_POST["height"];
$myRectangle = new Rectangle($w,$h);
?>


ความยาว: width?>

ความสูง: height?>

พื้นที่: ?area()?>

เส้นรอบรูป: perimeter()?>




จะเห็นว่า OOP ช่วยให้เราสามารถใช้แม่แบบ หรือ CLASS สร้าง วัตถุ (objects) ได้อีกจำนวนมาก โดยใช้โค้ดของเดิม ทำให้ดูง่ายไม่ยุ่งยาก แต่ทั้งหมดนี้เป็นเพียงพื้นฐานเบื้องต้นเท่านั้น แต่เพียงพอที่จะเป็นพื้นฐานในการศึกษาต่อไป



โดย อ.ทองจุล ขันขาว

ให้เรตสมาชิก: 3 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

การใช้ Regular Expression ใน PHP

 

การใช้ Regular Expression ใน PHP*


บทนำ

คำ ว่า Regular expressions ดูเหมือนจะเป็นคำที่น่ากลัวเอามาก ๆ สำหรับนักโปรแกรมมือใหม่ หลายคนไม่อยากรู้จักมันเลยเสียด้วยซ้ำ แต่ขอบอกว่า จริง ๆ แล้วมันไม่ยากแล้วก็มีประโยชน์มากด้วย ไม่ว่าจะเป็น JavaScript หรือ Perl ต่างก็ใช้กันทั้งนั้น จึงไม่เสียหาย ถ้าจะทำความรู้จักกับมันไว้บ้าง

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

เห็นไหมล่ะว่า Regular expression มีประโยชน์อย่างไร


Regular expression คืออะไร?

ถ้า นึกถึงโปรแกรมพิมพ์เอกสาร ที่มีฟังชั่นให้เราสามารถค้นและแก้ไขคำที่พิมพ์โดยการสั่ง replace ก็พอจะเข้าใจ concept ของ Regular expression แล้ว เพียงแต่ว่า Regular expression ทำได้มากกว่าเยอะ นักเขียนโปรแกรมบนเว็บส่วนมากใช้ Regular expression เพื่อตรวจสอบ email เบื้องต้น ว่า ผู้ใช้พิมพ์ email เข้ามาถูกรูปแบบหรือไม่ บางครั้งก็ใช้ในการตรวจสอบรูปแบบ เช่น หมายเลขประจำตัวนักศึกษา ซึ่งมีรูปแบบแน่นอน ถ้าพิมพ์มาไม่ถูกรูปแบบก็แสดงว่าพิมพ์ผิด เป็นต้น

และ ที่ใช้กันบ่อยมากบนเว็บก็คือ การตรวจสอบข้อมูลบนฟอร์ม ความจริงแล้ว PHP มีฟังชั่นสำหรับตรวจสอบข้อความ (string) อยู่เยอะเหมือนกัน เช่น การตัดช่องว่างหน้าหรือหลังคำ ก็ใช้ฟังชั่น trim เป็นต้น แต่ว่าเสน่ห์ของ Regular expression อยู่ที่ความง่าย ใช่แล้ว Regular expression ใช้ง่าย ไม่ต้องเขียนโปรแกรมยืดยาวก็ทำได้เหมือนกัน ถ้าพอใช้คล่องแล้วก็จะพูดว่า แหมรู้ยังงี้ ใช้ Regular expression เสียก็ดี

PHP** มีฟังชั่นที่ใช้ Regular expression อยู่ทั้งหมด 6 ฟังชั่น การใช้ฟังชั่นพวกนี้ เราต้องใส่ argument ที่เป็น Regular expression ฟังชั่นทั้ง 6 ก็ได้แก่:

? ereg: ใช้สำหรับค้นหา คำ หรือ ตัวอักษรที่มีในข้อความที่ต้องการ ? ereg_replace: ใช้สำหรับค้นหาคำ แล้วแทนที่ด้วยคำที่กำหนด ? eregi: ใช้เหมือนกับ ereg แต่ case sensitive นั่นคือ ถือว่า ตัวอักษรภาษาอังกฤษตัวเล็กและตัวใหญ่ (capital letters) เป็นคนละตัวกัน ? eregi_replace: ใช้เหมือนกับ eregi แต่ case sensitive ? split: ใช้ค้นหาคำที่กำหนด และคืนค่าในลักษณะ array ? spliti: ใช้เหมือนกับ split แต่ case sensitive
ทำไมจึงต้อง Regular expressions?

ถ้า ท่านเขียนฟังชั่นเองเพื่อตรวจสอบข้อความต่าง ๆ ละก็ หันมาใช้ Regular expression ดีกว่า ลองสำรวจดูซิว่า ท่านทำสิ่งต่อไปนี้หรือไม่

? ท่านเขียนฟังชั่นเพื่อตรวจสอบทีละตัวว่า ในฟอร์มที่ผู้ใช้พิมพ์เข้ามา มีคำแปลกปลอม คำหยาบ หรือตัวอักษรบางอย่าง เช่น เครื่องหมาย @ ในอีเมล์ เป็นต้น ? ท่านเขียนฟังชั่นวน loop เพื่อตรวจสอบข้อความ และแทนที่คำที่พบด้วยคำที่กำหนด
ถ้า ใช่ แสดงว่าโปรแกรมของท่านยังมีข้อที่จะปรับปรุงให้ดีขึ้นได้ การเขียนฟังชั่นเองเพื่อให้ทำทั้งสองอย่างข้างต้น นักโปรแกรมทั่วไปเขาไม่นิยมทำกัน นอกจากนี้ยังเป็นการทำให้โปรแกรมทำงานช้าลงอีกด้วย ลองดูตัวอย่างสักสองตัวอย่าง ซึ่งเป็นการตรวจสอบอีเมล์เหมือนกัน

ตัวอย่างที่ 1



function validateEmail($email)

{

$isAtSymbol = strpos($email, "@");

$isDot = strpos($email, ".");


if($isAtSymbol && $isDot)

return true;

else

return false;

}


?>

ตัวอย่างที่ 2



function validateEmail($email)

{

return eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.([a-zA-Z]{2,4})$',$email);

}


?>

ตัวอย่าง แรก ดูเข้าท่าดี อ่านเข้าใจง่าย ทำงานเป็นขั้นตอน แต่ลองเปรียบเทียบประสิทธิภาพการทำงานกับตัวอย่างที่ 2 จะเห็นว่า แตกต่างกัน ตัวอย่างที่ 2 ใช้เพียงบรรทัดเดียวในการตรวจสอบอีเมล์ ในขณะที่ตัวอย่างที่ 1 ใช้ตั้งหลายบรรทัด

ตัวอย่าง ที่ 2 เรียกใช้ฟังชั่น ereg ถ้าหากว่า ตรวจสอบแล้วถูกต้อง ก็จะคืนค่าที่เป็นจริง แต่ถ้าตรวจสอบแล้วไม่เป็นไปตามที่ Regular expression ที่กำหนดไว้ ก็จะคืนค่าที่เป็นเท็จ


รูปแบบ ไวยากรณ์ ของ Regular expression

รูปแบบของ Regular expression ที่ควรรู้จัก มีดังนี้


1. การกำหนดว่า ต้องเป็นตัวแรกของข้อความ:

เช่น เราต้องการตรวจสอบว่า คำที่กำลังตรวจสอบ ขึ้นต้นด้วยคำว่า ?ความ? หรือไม่ เราจะใช้เครื่องหมาย ^ เพื่อระบุว่า ต้องขึ้นต้นด้วยคำคำนี้ ตัวอย่าง


อย่างนี้ ค่าที่ได้ คือ จริง หรือ true


อย่าง นี้ จะได้ค่าที่เป็นเท็จ หรือ false เพราะ เรากำหนดให้ต้องขึ้นต้นด้วยคำว่า ?ความ? แต่ในคำที่ให้ค้นหา ขึ้นต้นด้วยคำว่า ?คน? จึงทำให้ค่าที่ได้เป็นเท็จ


2. การกำหนดว่า ต้องเป็นตัวสุดท้ายของข้อความ:

เราใช้เครื่องหมาย $ เพื่อดูว่า ข้อความที่จะค้นหานั้น ลงท้ายด้วยคำที่กำหนดหรือไม่

 


จะได้ค่าที่เป็นจริง เพราะ ข้อความที่นำมาค้น ลงท้ายด้วยคำว่า ?ความ?


จะได้ค่าที่เป็นเท็จ หรือ false


3. การค้นหาตัวอักษร:

ถ้าต้องการระบุว่าจะต้องมีตัวอักษรจะเป็นตัวเลขหรือตัวอักษรก็ได้ แต่ไม่ใช่ช่องว่าง เราจะใช้ จุด เช่น

 

จะได้ค่าที่เป็นจริง


จะได้ค่าที่เป็นเท็จ เพราะสิ่งที่นำมาค้นหาไม่มีอะไรเลย


4. การกำหนดว่า อาจจะมีตัวอักษรที่กำหนดหรือไม่ก็ได้

เราใช้เครื่องหมาย * เพื่อบอกว่าอาจจะมีหรือไม่มีก็ได้




ทั้งสองตัวอย่าง จะให้ค่าที่เป็นจริง เพราะเครื่องหมาย * จะบอกว่ามีตัว ?ก? หรือไม่ก็ได้

มีอีกวิธีหนึ่งที่จะระบุว่า ให้มีตัวอักษรนั้น ในคำหรือไม่ วิธีนี้เราจะใช้เครื่องหมาย ? เช่น


เป็นการบอกว่า คำที่นำมาค้นหา อาจจะมีตัว ก ไก่ หรือไม่ ก็ได้


บาง คนอาจจะนึกถามอยู่ในใจว่า แล้วมันมีประโยชน์อย่างไร เพราะมีก็ได้ ไม่มีก็ได้ ไม่เห็นจะแตกต่างอะไรเลย ก็เหมือนกันนั่นแหละ ก็ต้องขอบอกว่า มันมีประโยชน์ตรงที่เราสามารถกำหนดทางเลือกได้ เช่น เราจะตรวจสอบการป้อนข้อมูลตัวเลขว่าผู้ใช้โปรแกรมป้อนเข้ามาถูกหรือไม่ เรารู้ว่าตัวเลขสามารถพิมพ์ได้หลายแบบ บางทีก็มีเครื่องหมายคอมม่าหลังหลักพัน บางทีก็ไม่มี ซึ่งถูกทั้งสองรูปแบบ อย่างนี้ เราก็กำหนดให้เครื่องหมายคอมม่า มีก็ได้ไม่มีก็ได้ ถูกทั้งสองอย่าง เราก็ใช้เครื่องหมายนี้กำกับไว้ข้างหลังเครื่องหมายคอมม่าเสียนั่นเอง ตอนท้ายจะมีตัวอย่างให้ดู เป็นการกำหนดว่า จะพิมพ์เป็นเลขจำนวนเต็ม หรือทศนิยม ก็ได้ คือ มีจุดหรือไม่มีจุดต่อท้าย ก็ได้ โดยการใช้เครื่องหมาย ? นี่แหละ


5. การกำหนดให้มีตัวอักษรที่กำหนด อย่างน้อย 1 ตัว

เราใช้เครื่องหมาย + เพื่อระบุว่า จะต้องมีตัวอักษรนั้นอย่างน้อย 1 ตัว เช่น


จะได้ค่าที่เป็นจริง เพราะคำว่า ?วิธีการทำงาน? มีตัว ก ไก่ รวมอยู่ด้วย โดยไม่บังคับว่าจะอยู่ที่ไหนในคำ


ตัวอย่างข้างต้นจะให้ค่าที่เป็นเท็จ เพราะคำว่า ?วิธีทำงาน? ไม่มีตัว ก ไก่ อยู่เลย


6. การตรวจสอบช่องว่าง

การ ตรวจสอบช่องว่าง ให้ใช้ [[:space:]] หรืออาจจะใช้ ? ? แทนก็ได้ แต่การใช้ :space: ซึ่งเป็น class ของ Posix จะหมายความรวมถึง เครื่องหมายอื่น ๆ เช่น tab เครื่องหมายขึ้นบรรทัดใหม่ รวมทั้งการเว้นวรรคด้วย ตัวอย่าง


จะให้ค่าที่เป็นจริง แต่

 

จะให้ค่าที่เป็นเท็จ เพราะไม่มีช่องว่างเลย


7. การตรวจสอบเป็นช่วง

ถ้า ต้องการตรวจสอบเป็นช่วง เราจะใช้เครื่องหมาย [ และ ] เพื่อคร่อมช่วงที่ต้องการ เช่น ต้องการระบุว่า ต้องเป็นระหว่างเลข 0 ? 9 เท่านั้น เราจะเขียนว่า [0-9] ลองดูตัวอย่างต่อไปนี้



// กำหนดให้มีเฉพาะตัวอักษรภาษาไทยเท่านั้น มีตัวเลขที่เป็นภาษาไทยได้ แต่ห้ามมีตัวอักษรภาษาอังกฤษ

echo ereg("^[ก-๙]+$", "ทองจุล๐๑๒๓"); // ให้ค่าที่เป็นจริง


?>


ใน กรณีของตัวอักษรภาษาไทย ถ้าจะกำหนดไม่ให้มีตัวเลข ต้องกำหนดค่า ระหว่าง ตัว ก ไก่ และ ไม้ตรี ถ้ากำหนดตั้งแต่ ตัว ก-ฮ จะทำให้มีสระไม่ได้ ซึ่งก็จะทำให้ไม่สามารถสะกดตัวเป็นคำได้อย่างสมบูรณ์


ขอ ให้สังเกตว่าในกรณีนี้ก็จะมีวรรคไม่ได้เหมือนกัน เพราะตัวอักษร ช่องว่าง หรือ space อยู่นอกขอบเขตที่กำหนด ถ้าจะให้มี ก็ต้องเพิ่มเข้าไป เช่น


 

ในกรณีตัวเลข ถ้าต้องการตรวจดูว่า ข้อความที่กำหนดมีเฉพาะตัวเลขเท่านั้น ไม่ว่าจะเป็นเลขไทย หรือเลขฝรั่ง ให้ตรวจสอบดังนี้


จะ ได้ค่าที่เป็นจริง เครื่องหมาย ^ แสดงว่าข้อความที่นำมาค้น ต้องขึ้นต้นด้วย เลข 0-9 หรือ ๐-๙ เครื่องหมาย + แสดงว่า ต้องมี จะเป็นช่องว่างมาเฉย ๆ ไม่ได้ และเครื่องหมาย $ แสดงว่า ต้องจบลงด้วยตัวเลขเช่นเดียวกัน

8. การจัดกลุ่มคำ หรือ ข้อความ
ถ้าต้องการจัดกลุ่มคำหรือข้อความให้ใช้เครื่องหมายวงเล็บ () คร่อม เช่น


ข้อ ความข้างต้น กำหนดให้จะต้องขึ้นต้นด้วยคำว่า ทองจุล หรือ ปรีชา เพราะมีเครื่องหมาย ^ และต่อด้วยอะไรก็ได้ ดังนั้น คำว่า ปรีชา สุขเกษม จึงให้ค่าที่เป็นจริง แต่ถ้าเป็นชื่อ บำรุง โตรัตน์ ก็จะให้ค่าเป็นเท็จ เพราะไม่อยู่ในเงื่อนไขที่ต้องการ เครื่องหมาย | หมายความว่า อย่างใดอย่างหนึ่ง


9. การตรวจสอบเครื่องหมาย หรือ สัญลักษณ์พิเศษ

เนื่อง จากใน Regular expression ใช้เครื่องหมายในไวยากรณ์ ดังนั้นถ้าเราต้องการจะให้ค้นหาเครื่องหมายดังกล่าวในข้อความที่กำหนด จึงจำเป็นต้องบอกให้โปรแกรมรู้ว่า เครื่องหมายที่ใช้นี้ ไม่ใช่เป็นส่วนหนึ่งของไวยากรณ์ ลักษณะนี้ เราเรียกว่าเป็นการ escaping เราจะใช้เครื่องหมาย ใส่ไว้หน้าตัวอักษรพิเศษ หรือ สัญลักษณ์นั้น ๆ เช่น * เป็นการบอกว่า ให้ตรวจหาเครื่องหมาย * ในคำที่ส่งมาเพื่อค้นหา เป็นต้น ในกรณีที่ต้องการให้คำว่า ปรีชา ต้องขึ้นต้นด้วยเครื่องหมาย | เราทำดังนี้


ข้อ ความข้างบนจะให้ค่าเป็นเท็จ เพราะเรากำหนดให้คำว่า ปรีชา ต้องขึ้นต้นด้วย | ถ้าเปลี่ยนคำว่า ปรีชา สุขเกษม เป็น |ปรีชา สุขเกษม ก็จะได้ค่าที่เป็นจริง

ตัวอักษร หรือสัญลักษณ์พิเศษที่ต้อง escape มีดังนี้ ^, $, (, ), ., [, |, *, ?, +, , และ {


10. สัญลักษณ์ของ Regular expression สรุปได้ดังนี้


^
คำ/อักษร ที่อยู่หน้าเครื่องหมายนี้ ต้องเป็นคำขึ้นต้นของข้อความที่นำมาตรวจสอบเช่น ?^การ? เป็นการกำหนดว่า คำที่นำมาตรวจสอบต้องขึ้นต้นด้วยคำว่า การ เช่น ?การทำดี? ?การบ้าน? เป็นต้น คำพวกนี้จะผ่านการทดสอบ

$
คำ/อักษร ที่อยู่หน้าเครื่องหมายนี้ ต้องอยู่ตอนท้ายของข้อความที่นำมาตรวจสอบ เช่น ?มา$? จะถือว่าคำต่อไปนี้ถูกตามเงื่อนไข ?ตามา? ?ขอขมา? หรือแม้แต่คำว่า ?หมา? แต่คำว่า ?ทำดี? จะไม่ผ่าน เพราะไม่ได้ลงท้ายด้วยคำว่า ?มา? ตามเงื่อนไขนั่นเอง
+
คำ/อักษร ที่อยู่หน้าเครื่องหมายนี้ ต้องมีปรากฏในคำที่นำมาตรวจสอบ อย่างน้อย 1 ตัว เช่น ?ท+? จะถือว่าคำต่อไปนี้ผ่านการตรวจสอบ เช่น ?ทองจุล? ?วันทนา? ?ถนนหนทางทุกแห่ง?
?
คำ/อักษรที่อยู่หน้าเครื่องหมายนี้ อาจะมีปรากฏในคำที่นำมาตรวจสอบ หรือไม่ก็ได้ ถ้ามีจะมีกี่ตัวก็ได้

?ก?ข+$? หมายถึง อาจจะมีด้วยตัว ก และอักษรตัวสุดท้ายต้องมีตัว ข อย่างน้อย 1 ตัว (เครื่องหมาย + แสดงว่ามีอย่างน้อย 1 และ เครื่องหมาย $ แสดงว่าเป็นตัวสุดท้าย)

*
เหมือนกับ ?
s
ช่องว่าง หรือ whitespace

.
ใช้แทนตัวอักษรอะไรก็ได้

? ?ก.[0-9]? หมายถึง ตัว ก ตามด้วยตัวอักษรอะไรก็ได้ และต่อด้วยเลขอารบิค เลข 0-9
? ?^.{3}$? หมายถึง ต้องมีตัวอักษรเพียง 3 ตัวเท่านั้น เป็นตัวเลข ตัวอักษร ภาษาไทย ภาษาอังกฤษ ได้ทั้งนั้น
[ ]
ใช้ระบุตำแหน่งในคำว่า ในตำแหน่งนี้จะมีตัวอักษรอะไรได้บ้าง เช่น

  • ?[นร]? เป็นการกำหนดว่า คำที่นำมาตรวจสอบ ต้องเป็นตัว น หรือ ตัว ร เท่านั้นจึงจะผ่าน มีความหมายเช่นเดียวกับ ?น|ร?
  • ?[ก-ค]? เป็นการบอกว่า คำที่นำมาจะต้องเป็น ตัว ก ข ค เท่านั้น เช่น ในกรณีเลขประจำตัวที่ขึ้นต้นด้วย ก ข หรือ ค เท่านั้น ถ้าพิมพ์ตัวแรกเป็นตัวอักษรตัวอื่นก็แสดงว่าพิมพ์ผิด เราจะเขียนได้ดังนี้ ^[ก-ค]
  • ?^[a-zA-Z]? เป็นการบอกว่า คำที่นำมาตรวจสอบต้องขึ้นต้นด้วยตัวอักษร จะเป็นตัวเล็ก คือ a ถึง z หรือ ตัวใหญ่ คือ A ถึง Z ก็ได้
  • ?[0-9๐-๙]%? เป็นการบอกว่า ให้มีตัวเลข 1 ตัว เลขอะไรก็ได้ เลข 0 ถึง เลข 9 เป็นได้ทั้งเลขไทยและอารบิค ต่อด้วยเครื่องหมาย %
  • [ก-๙] ตัว ก ถึง ฮ รวมทั้งสระทุกตัว และ ตัวเลขไทย ๐ ถึง ๙
  • [0-9๐-๙] เลข 0-9 ทั้งเลขไทยและฝรั่ง
  • ^[0-9๐-๙]+$ ให้มีเฉพาะตัวเลข 0-9 เลขไทยหรือเลขฝรั่งก็ได้ แต่ห้ามมีตัวอักษรใด ๆ
  • "^[กข]{3} [-][0-9]$" ขึ้นต้นด้วยตัว ก หรือ ข จำนวน 3 ตัว ต่อด้วยเครื่องหมาย ? และจบด้วยตัวเลขอารบิค เลข 0-9 เช่น ?กขก-5? ?กกก-3? เป็นต้น สิ่งต่อไปนี้จะไม่ผ่านหรือเป็นเท็จ เช่น ?กกกขข? เพราะ ตัวที่ 4 ไม่ใช้เครื่องหมาย ? และตัวสุดท้ายไม่ใช่ตัวเลข ?ขขข-๘? ตัวเลขสุดท้ายเป็นเลขไทย
ไม่ว่าตัวอักษร หรือสัญลักษณ์ใด ๆ ที่อยู่ภายในเครื่องหมาย [ ] จะกลายเป็นสัญลักษณ์ธรรมดา เช่น + กลายเป็นเครื่องหมายบวก แทนที่จะหมายถึงว่า ต้องมีตัวอักษรอย่างน้อย 1 ตัว
{ }
แสดงจำนวนครั้งที่ซ้ำกัน เช่น

  • ?กข{2}? หมายถึงให้มีตัว ข จำนวน 2 ตัว เช่น ?กขข?
  • ?กข{2,} หมายถึงให้มีตัว ข อย่างน้อย 2 ตัว เช่น ?กขขขข?
  • ?กข{3,5} หมายถึงให้มีตัว ข จำนวน 3-5 ตัวเท่านั้น คือ ?กขขข? ?กขขขข? และ ?กขขขขข?
( )
ใช้รวมกลุ่มเข้าด้วยกันเป็นส่วนเดียวกัน เช่น

  • ?ก(ขค)*? หมายถึง ตัว ก และอาจจะตามด้วยตัว ขค หรือไม่มีตัว ขค ก็ได้ เครื่องหมาย * แสดงว่าจะมีหรือไม่ก็ได้
  • ?ก(ขค){1,5}? หมายถึง ตัว ก แล้วจะตามด้วย ขค จำนวน 1-5 ชุด เช่น ?กขคขคขค? หรือ ?กขคขค? ก็ได้
|
เสนอทางเลือกอย่างใดอย่างหนึ่ง เช่น

  • ?การ|ความ? เป็นการบอกว่า จะใช้คำว่า การ หรือ ความ ก็ได้
  • ?(ก|ขค)งจ? เช่น กงจ หรือ ขคงจ ก็ได้

^[1-9][0-9]*$
ขึ้นต้นด้วยเลข 1-9 และอาจจะต่อด้วย เลข 0-9 กี่ตัวก็ได้ ในกรณีนี้ ถ้าเป็นเลข 0 ก็จะไม่ผ่าน จะผ่านตั้งแต่ 1 2 3 4 ไปเรื่อย ๆ

^(0|[1-9][0-9]*)$
อาจ จะขึ้นต้นด้วยเลข 0 หรือเลข 1-9 ก็ได้ และอาจจะต่อด้วยเลข 0-9 ในกรณีนี้ เราใช้ตรวจสอบการพิมพ์ที่เป็นตัวเลขตั้งแต่ 0 ขึ้นไป ถ้ามีตัวอักษร ก็จะไม่ผ่านการตรวจสอบ หรือ เป็นเท็จ นั่นเอง
^(0|-?[1-9][0-9]*)$
เหมือน ^(0|[1-9][0-9]*)$ เพียงแต่ ถ้าไม่ขึ้นต้นด้วยเลข 0 สามารถมีเครื่องหมาย ลบ ได้ หรือจะไม่มีเครื่องหมายลบ ก็ได้ เครื่องหมาย ? แสดงว่า จะมีหรือไม่มี ก็ได้
^[0-9]+(.[0-9]+)?$
ขึ้น ต้นด้วย 0-9 อย่างน้อย 1 ตัว และอาจจะมี จุดและต่อด้วยตัวเลข 0-9 อย่างน้อย 1 ตัว อย่างนี้ เป็นการบอกว่าจะทศนิยมหรือไม่มีก็ได้ (สังเกตเครื่องหมาย ? อยู่หลังกลุ่มทั้งหมดซึ่งอยู่ในวงเล็บ เป็นการบอกว่า กลุ่มนี้ คือ (.[0-9]+) จะมีหรือไม่มีก็ได้) แต่จะมีแค่ จุดเฉย ๆ เช่น 15. อย่างนี้ไม่ได้ ต้องเป็น 15.2 หรือ 15.38 ก็ได้ (เพราะเครื่องหมาย + อยู่หลัง [0-9] แสดงว่า ตำแหน่งนี้ คือต่อจาก จุด ยังไง ๆ ก็ต้องมีตัวเลข 0 ถึง 9 อย่างน้อย 1 ตัว จะเป็น 2 ตัว 5 ตัว 10 ตัว ก็ได้)
^[0-9]+(.[0-9]{2})?$
เหมือนข้างบน แต่บังคับว่า ถ้ามีทศนิยม ทศนิยมต้องมี 2 ตำแหน่งเท่านั้น เครื่องหมาย {} กำหนดว่าจะต้องมีซ้ำกี่ครั้ง
^[0-9]+(.[0-9]{1,2})?$
เหมือนข้างบน แต่อนุญาตให้มีทศนิยม 1 หรือ 2 ตำแหน่ง สังเกตการเขียนตัวเลข ในระหว่างเครื่องหมาย { และ }

^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
ต้องขึ้นต้นด้วยตัวเลข 0-9 หรือ อาจจะตามด้วยเครื่องหมาย คอมม่า และตัวเลข 0-9 อีก 3 ตัว และอาจจะต่อด้วยทศนิยม 1 หรือ 2 ตำแหน่ง
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
เหมือน ข้างบน แต่กำหนดให้การมีเครื่องหมาย คอมม่า อาจจะมีหรือไม่มีก็ได้ วิธีกำหนดทางเลือกใช้เครื่องหมาย | แทนที่จะใช้ ? การเลือกใช้ต้องอยู่ที่เราจะตัดสินใจว่าจะเลือกใช้อะไรจึงจะเหมาะสม นี่แหละเสน่ห์ของการเขียนโปรแกรม มีวิธีการหลายอย่างที่จะได้มาซึ่งผลลัพธ์อย่างเดียวกัน แต่อย่างไหนจะเหมาะ ต้องเลือกดู เลือกใช้ให้เหมาะสม

สรุป

คิด ว่าเท่าที่ยกตัวอย่างมาก็คงจะพอเป็นสังเขป พอรู้จัก Regular expression และการใช้แล้ว สิ่งสำคัญอยู่ที่การคิดวิธีใช้ เช่นต้องการจะกำหนดเงื่อนไขอย่างไร เพื่อให้ได้เงื่อนไขที่เป็นจริง ข้อความที่ต้องการมีลักษณะอย่างไร เป็นต้น แต่ท้ายที่สุดแล้ว บางครั้งก็จำเป็นที่เราจะต้องตรวจสอบด้วยตัวเองอีกครั้ง การกำหนดเงื่อนไข ถ้าผู้ใช้เดาลักษณะเงื่อนไขได้ ก็สามารถที่จะพิมพ์หรือกำหนดข้อความให้ผ่านการกรองได้เหมือนกัน ดังนั้นดีที่สุดจึงต้องมีการตรวจสอบดูอีกครั้ง


* ความรู้พื้นฐาน: PHP เบื้องต้น และ การสร้าง function

** หมายเหตุ ใน PHP มีฟังชั่นที่เกี่ยวกับ regular expression อยุ่ 2 แบบ คือ แบบ Perl5 และแบบ Posix ในบทความนี้จะเอาเฉพาะแบบ Posix เท่านั้น ถ้าต้องการศึกษาแบบ Perl 5 ให้ดูที่ PHP.net


เพิ่มเติม
Sequence Meaning
a Alert (bell), x07.
b Backspace, x08, supported only in character class.
e ESC character, x1B.
n Newline, x0A.
r Carriage return, x0D.
f Form feed, x0C.
t Horizontal tab, x09
octal Character specified by a three-digit octal code.
xhex Character specified by a one- or two-digit hexadecimal code.
x{hex} Character specified by any hexadecimal code.
cchar Named control character.
Table 32. Character classes and class-like constructs
Class Meaning
[...] A single character listed or contained within a listed range.
64 | Regular Expression Pocket Reference
[^...] A single character not listed and not contained within a listed
range.
[:class:] POSIX-style character class valid only within a regex character
class.
. Any character except newline (unless single-line mode,/s).
C One byte; however, this may corrupt a Unicode character
stream.
w Word character, [a-zA-z0-9_].
W Non-word character, [^a-zA-z0-9_].
d Digit character, [0-9].
D Non-digit character, [^0-9].
s Whitespace character, [nrft ].
S Non-whitespace character, [^nrft ].
Table 33. Anchors and zero-width tests
Sequence Meaning
^ Start of string, or after any newline if in multiline match mode,
/m.
A Start of search string, in all match modes.
$ End of search string or before a string-ending newline, or before
any newline if in multiline match mode, /m.
Z End of string or before a string-ending newline, in any match
mode.
z End of string, in any match mode.
G Beginning of current search.
b Word boundary; position between a word character (w) and a
non-word character (W), the start of the string, or the end of
the string.
B Not-word-boundary.
(?=...) Positive lookahead.
(?!...) Negative lookahead.
(?<=...) Positive lookbehind.
Table 32. Character classes and class-like constructs
Class Meaning
PHP | 65
(?<!...) Negative lookbehind.
Table 34. Comments and mode modifiers
Modes Meaning
i Case-insensitive matching.
m ^ and $ match next to embedded n.
s Dot (.) matches newline.
x Ignore whitespace and allow comments (#) in pattern.
U Inverts greediness of all quantifiers: * becomes lazy and *?
greedy.
A Force match to start at search start in subject string.
D Force $ to match end of string instead of before the string
ending newline. Overridden by multiline mode.
u Treat regular expression and subject strings as strings of multibyte
UTF-8 characters.
(?mode) Turn listed modes (imsxU) on for the rest of the subexpression.
(?-mode) Turn listed modes (imsxU) off for the rest of the subexpression.
(?mode:...) Turn mode (xsmi) on within parentheses.
(?-mode:...) Turn mode (xsmi) off within parentheses.
(?#...) Treat substring as a comment.
#... Rest of line is treated as a comment in x mode.
Q Quotes all following regex metacharacters.
E Ends a span started with Q.
Table 35. Grouping, capturing, conditional, and control
Sequence Meaning
(...) Group subpattern and capture submatch into 1,2,?
(?P<name>?) Group subpattern and capture submatch into named capture
group, name.
n Contains the results of the nth earlier submatch from a
parentheses capture group or a named capture group.
Table 33. Anchors and zero-width tests
Sequence Meaning
66 | Regular Expression Pocket Reference

ทีมา อ.ทองจุล

ให้เรตสมาชิก: 1 / 5

ดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

วิธีติดตั้ง web server php apache IIS
บน winXP


เครื่อง ช่วนใน การติดตั้ง php apache Mysql ในคลิกเดียว
เท่าที่ผมรู้จัก มี อยู่ 3 ตัว คือ
1.WMServer tool 3.3 ซึ่งมี http://www.wmcreation.it/index.php?action=wmservertools
Apache 2.0.54
MySQL 4.1.12
perl 5.8.7
php 4.3.11
2.Appserv มีหลาย V. http://www.appservnetwork.com
3.XAMPP 1.5.1 http://www.apachefriends.org/en/index.html
MySQL 5.0.18
Apache 2.2.0
PHP 5.1.1
phpMyAdmin 2.7.0 pl1
4.EasyPHP 1.8 http://www.easyphp.org/
apache 1.3.33 - php 4.3.10 - mysql 4.1.9 - phpmyadmin 2.6.1
5. PHP Triad
http://sourceforge.net/projects/phptriad
6. WAMP
http://www.en.wampserver.com/
มีหลายเวอร์ชั่น เวอร์ชั่นที่ mysql ไม่มีปัญหาเรื่องภาษาไทยคือ WAMP 5..1.4.4
PHP 5.0.4
MySQL 4.1.10a
PHPmyadmin 2.6.1-pl3
SQLitemanager 1.0.4

ดูได้ที่บอร์ด เลยครับ
http://www.mindphp.com/forums/viewtopic.php?t=862

ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

วิธี การติดตั้ง บอร์ด SMF ร่วมกับ mambo
มี?3 ขั้น ได้แก่
1.?ติดตั้ง SMF บอร์ด
2.?ติดตั้ง mambo
3. การ Bridge (เชื่อ)?mambo กับ บอร์ด SMF


เอามาแปะไว้ให้ครับ? เผื่อเป็นประโยชน์แก่เพื่อนๆ ในนี้บ้าง
หลังจากที่มั่วๆ กับเวปส่วนตัวจนสำเร็จ? ลองเล่นๆ ดูนะครับ



จากที่ลองมั่วกับเวปตัวเองจนได้มาได้นั้น? ?เลย
เขียนๆ ประสบการณ์บ้างเผื่อใครจะอยากทำบ้าง

การติดตั้งบอร์ด SMF ร่วมกับ mambo
แบ่งเป็น 3 ขั้นหลักๆ? ได้แก่
1. install SMF บอร์ด
ซึ่งดาวโหลดได้จาก http://www.simplemachines.org/download/
แล้วก็พาร์ชภาษามาลง ที่ http://www.simplemachines.org/download/?languages
เมื่อดาวโหลดมาแล้ว? ก็ให้ทำการแตกซิปโฟลเดอร์แล้วโยนเข้า FTP ที่เราฝากโฮสไว้? ในโฟลเดอร์ของเวป
แล้วก็ทำการเปลี่ยนชื่อโฟลเดอร์ให้ง่ายๆ เช่น forum หรือ webboard อะไรก็ว่าไป? มันจะเป็นพาร์ทเวลาเข้าบอร์ด
ของโดเมนนั้นเช่น? ?http://www.domain.com/forum


แล้วในกรณีที่โฮสเป็น os? LINUX ก็จะต้องทำการ chmod ไฟล์ในโฟลเดอร์ ของ SMF ที่เราอัพไปด้วยเป็นการกำหนด permission ในการลง
โดยจะกำหนดดังนี้
cmod 777 โฟลเดอร์? ?แล้วก็กดให้ apply all subfolder เพื่อให้มีผลต่อโฟลเดอร์ย่อยภายในด้วยน่ะ
- attachments/
- avatars/
- Packages/
- Smileys/
- Sources/
- Themes/
และก็ไฟล์
- agreement.txt
- Settings.php
- Settings_bak.php

ปล. ห้าม chmod 777 โฟลเดอร์หลักของ บอร์ด SMF เพราะมันจะเออเรอร์เป็น Internal Error เข้าไมได้

1.1 เข้าไปสร้างฐานข้อมูล โดยส่วนมากจะเป็น mysql ที่ทางโฮสมีไว้? โดยการสร้างจะทำได้หลายอย่าง บางเจ้าจะมี control panel มาให้?
หรือบางเจ้าก็จะให้เข้าทำใน phpmyadmin ก็สามารถใช้งานได้เหมือนกัน? หรือบางที่ก็สร้างมาให้เลย 1 ฐานข้อมูลแล้วแต่ไป
หลักการเหมือนกันก็คือ? สร้างฐานข้อมูลเปล่าๆ มา 1 ลูก? ?หากมีแล้วก็ใช้ที่มีก็ได้
โดยใช้ตาม user และ password ตามที่ทางโฮสแจ้งมา

ที่นี้ก็ถึงการ install ตัวบอร์ด SMF โดยป้อน url ตามโดเมนที่มี แล้วต่อด้วยชื่อ Folder ของ SMF นั้น
เช่น www.domain.com/forum
ก็จะได้หน้าการอินสตอลดังรูป


ก็ใส่ค่าของระบบที่เรามี
Forum name: = ชื่อ เวปบอร์ดที่เราจะตั้ง
Forum name: = url ผู้ที่จะใช้งานเวปบอร์ดเข้ามา? ?( ไม่ต้องเปลี่ยน )
Gzip Output: = ระบบบีบไฟล์ ( ไม่ต้องเปลี่ยน ) ติ๊กไว้
Database Sessions: = session ของระบบฐานข้อมูล ติ๊กไว้
MySQL server name: = ชื่อเครืองเซิร์ฟเวอร์? ส่วนมากทางโฮสก็จะใช้ค่าเดิมคือ loacalhost หรือใส่ไอพี 127.0.0.1
MySQL username: = user name ของฐานข้อมูลที่เราได้สร้างไว้ก่อนหน้านี้? ถ้าไม่รู้ลองใส่ username ของ FTP ดู
MySQL password: = password ของฐานข้อมูลที่เราสร้างไว้
MySQL database name: = ชื่อฐานข้อมูลที่เราสร้างไว้แล้ว
MySQL table prefix: = กำหนดตัวอักษรนำหน้าชื่อตารางในฐานข้อมูล? เปลี่ยนหรือไม่เปลี่ยนก็ได้
คลิก proceed
จะมาหน้าส่วนของการสร้างผู้ดูแลระบบ
user = ใส่ username ผู้ที่จะดูแลระบบ
password = รหัสผ่านผู้ดูแลระบบ
re-password = รหัสผ่านผู้ดูแลระบบ ใส่ย้ำอีกที
e-mail = อีเมลล์ของผู้ดูแลระบบ? หากมีเออเรอร์ให้ระบบจะส่ง error ไปให้ทางเมล์นี้
password อีกตัว = เป็นการถามรหัสผ่านของ ฐานข้อมูล? อีกที
คลิก proceed
จะมีข้อความยินดี? ลงสำเร็จและกดที่ ฟอรัมติดตั้งใหม่? ? ก็จะพบหน้าตาเวปบอร์ดครับ
และจะมีข้อความว่า? ไฟล์ install.php ยังไม่ได้ลบ? ให้เราเข้า ftp ไปลบ? หรือ rename ไฟล์นั้นเสีย
แค่นี้ก็ได้บอร์ด SMF ไว้ใช้แล้ว

************************************************


2. การอินสตอล ตัว mambo
download ตัว mambo ไทยได้จาก http://www.thaimambo.net/index.php?option=com_remository&Itemid=26
ดาวโหลดมาเสร็จก็ แตกซิปไฟล์? แล้วโยนขึ้น FTP ไปไว้บนไดเรครี่ของเวปเลย
แล้วหากโฮส เป็น LINUX ก็ทำการ chmod 777 ทั้งหมดเลย? apply all subfolder ด้วย
แล้วก็ทำการเข้าอินสตอร์ที่ url ของโดเมนเลยครับ? หากสร้างโฟลเดอร์ย่อยไว้ก็พิมไปด้วย เช่น
www.domain.com/mambo ( อันนี้กรณีสร้างแมมโบ้ ในโฟลเดอร์อีกที)
จะโผล่หน้าการอินสตอล์ของ mambo เลย
- หน้าแรกจะเป็นการโชว์ค่าว่าพร้อมติดตั้งหรือไม่? ต้องเป็น writeable ( เขียนลงไฟล์ได้) สีเขียวๆ หมดนะ? ?next
- เป็นหน้าการแสดงเงื่อนไขของ mambo? ?next
- เป็นหน้าการใส่ข้อมูลเซิร์ฟเวอร์
ชื่อโฮส = localhost (ซึ่งเป็นค่าปกติที่ใช้กันทั่วไป บางที่เท่านั้นถึงเป็นค่าอื่น )
ชื่อผู้ใช้ฐานข้อมูล = user ของฐานข้อมูล ที่เราสร้างไว้
รหัสผ่านฐานข้อมูล =? ตามที่สร้างไว้เลย
ชื่อฐานข้อมูล = ชื่อฐานข้อมูล? ***ในกรณีที่เราจะทำ mambo ให้เชื่อมต่อกับบอร์ด mambo ก็ใส่เป็นฐานข้อมูลเดียวกัน
ค่า Prefix =? ?ค่านำหน้าชื่อตารางในฐานข้อมูล? *** ห้ามใส่เหมือนกับของเวปบอร์ดนะ
ต้องการลบตารางที่มีอยู่หรือไม่ = (ให้เลือกเฉพาะ ในกรณีที่ท่านได้เคยทำการติดตั้งไปแล้วหนึ่งครั้ง แต่ต้องการติดตั้งทับใหม่อีกที )
ต้องการสำรองข้อมูลตารางหรือไม่ =(ในกรณีนี้ถ้าท่านติดตั้งใหม่อีกครั้ง แต่ต้องการสำรองข้อมูลเดิมที่มีอยู่ในตารางให้เลือกที่นี่ครับ )
ต้องการติดตั้งข้อมูลตัวอย่างหรือไม่ = (ถ้าท่านต้องการติดตั้งข้อมูลตัวอย่างลงไป ซึ่งแมมโบ้มีมาให้อยู่แล้ว ก้อต้องติ๊กเลือกเครื่องหมายในข้อนี้ด้วยครับ)
กด next
- ตั้งชื่อ ไซต์ของเรา? กด next
- การกำหนด พาธของ Mambo URL อีเมล์ และรหัสผ่านของ Admin
ค่า URL และ path ให้ค้างค่าเดิมไว้ห้ามเปลี่ยน
ส่วน email และ รหัสผ่านที่ระบบเจ็นค่ามานั้น? ?เราก็เปลี่ยนเป็นของเราเองแล้วจำให้ได้นะครับ
เพราะการปรับแต่งต่างๆ ใน mambo ต้องใช้รหัสนี้
กด next?
-? หน้าต่างแสดงค่าต่างๆ ของ admin? และพาสเวิร์ด ของ admin
แล้วกดไปหน้า ดูเวปไซต์
- จะมีข้อความให้เราลบโฟลเดอร์ install ของ mambo? เราก็ไปลบออกซะ
แล้วก็ลองเข้าดู? ก็จะได้เวปไซตดังใจ

*********************************************

3. การ Bridge mambo กับ บอร์ด SMF
ดาวโหลด MOS_SMF Bridge ที่ http://mamboxchange.com/projects/mos-smf/
จะได้ไฟล์มาข้างในจะมีแบ่งเป็น step by step ไฟล์ต่างๆ จะอยู่ในโฟลเดอร์แต่ละสเตปเลย? จะอธิบายดังนี้
step 1? -? เข้าไปในบอร์ด SMF แล้วจัดการลงแพคเกจ smf_mambo3.1.tar.gz? ที่ศูนย์กลางจัดการแพคเกจซะ? ตรวจสอบให้แต่ว่า success สำเร็จ
หากมีเวอร์ชั่นเก่าอยุ่ให้ทำการ uninstall ออกซะก่อน
-? ?ถ้าติดตั้งไม่สำเร็จ? ให้ทำการแตกไฟล์ zip แล้วอัพไฟล์ MOS_SMF.php ไปไว้ใน ไดเรคโทรี่ ของ SMF ของคุณแล้วเข้าโฟลเดอร์ Sources
step 2? -? เข้าไปในส่วนจัดการของ mambo? แล้วทำการ install component? com_smf.zip? ดูค่าต่างๆ ให้ถูกต้อง
โดยถ้าไม่แน่ใจก็กดปุ่ม create path automaically? ?
-? เลือก unwrapped
-? Use SMF Register? เพื่อให้เมื่อ Register user เข้า SMF
step 3 - ติดตั้ง SMF-Registration คอมโพเนนท์ของ mambo?
step 4 - ติดตั้ง mod_smf_login.php? ในส่วนของ module ของ mambo
-? จัดการเทมเพลต โดยไปที่ เวป > การจัดการเทมเพลท > เทมเพลตเวปไซต์? ? คลิกเลือกเทมเพลตที่ใช้งานอยู่ (index.php)
แล้วกด Edite HTML? ?แล้วใส่โค๊ดนี้ในส่วนของก่อน

โค๊ด:
? ? ? ? ? global?$sc,?$context;

if?(!
defined('SMF')){
require?(
"administrator/components/com_smf/config.smf.php");
require?(
$smf_path."/SSI.php");
}

$sc?=?&$context['session_id'];
$_SESSION['USER_AGENT']?=?$_SERVER['HTTP_USER_AGENT'];

mysql_select_db($mosConfig_db);
?>


แล้วก็ใส่? โค๊ดนี้ในส่วนของก่อน

โค๊ด:
($db_name);??>
เสร็จแล้วก็ เลือกเป็น plublish เทมเพลตซะ? ก็จะได้เวป mambo ที่เชื่อมต่อ? user เดียวกันระหว่าง 2 ระบบแล้ว
โอย? เหนื่อย...
พอดีขี้เกียจๆ หน่ะ ไม่งั้นจะลงรูปเยอะๆ และแต่ก็น่าจะพอเข้าใจและนะ
โชคดีทุกท่าน? ? Grin

เสร็จแล้วก็ เลือกเป็น plublish เทมเพลตซะ? ก็จะได้เวป mambo ที่เชื่อมต่อ? user เดียวกันระหว่าง 2 ระบบแล้วโอย? เหนื่อย...พอดีขี้เกียจๆ หน่ะ ไม่งั้นจะลงรูปเยอะๆ และแต่ก็น่าจะพอเข้าใจและนะโชคดีทุกท่าน

ที่มา จาก คุณ rukawa บอร์ด ไทยแอดมิน



กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
สอบถามคะ ติดตั้ง Template ไม่ได้ขึ้น Error เป็นเพราะอะไรคะ
โดย moomai พฤ 27 เม.ย. 2017 7:52 pm บอร์ด Joomla Development
0
10
พฤ 27 เม.ย. 2017 7:52 pm โดย moomai
ถ้าจะออกแบบ db แบบระบบคล้ายๆmlm โครงสร้างทีไรบ้าง
โดย bondham อ 23 เม.ย. 2017 1:26 am บอร์ด SQL - Database
4
37
พฤ 27 เม.ย. 2017 7:26 pm โดย bondham
สอบถามค่ะ ในโปรแกรมที่เราสร้างมี errpr ขึ้นหมายความว่ายังไงคะ
โดย moomai พฤ 27 เม.ย. 2017 2:09 pm บอร์ด Programming - PHP
3
19
พฤ 27 เม.ย. 2017 2:09 pm โดย tsukasaz
ติดตั้งโปรแกรม xampp ที่เป็นไฟล์ .zip ต้องทำยังไงบ้างคะ
โดย moomai พฤ 27 เม.ย. 2017 1:56 am บอร์ด Joomla Development
2
16
พฤ 27 เม.ย. 2017 1:56 am โดย moomai
ติดตั้งโปรแกรม xampp ที่เป็นไฟล์ .zip ต้องทำยังไงบ้างคะ
โดย moomai พฤ 27 เม.ย. 2017 1:55 am บอร์ด Joomla Development
0
4
พฤ 27 เม.ย. 2017 1:55 am โดย moomai
จะจัดตั้งบริษัทใหม่ มีค่าใช้จ่ายประมาณเท่าไหร่ครับ
โดย M029 พ 26 เม.ย. 2017 6:42 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
1
23
พ 26 เม.ย. 2017 6:42 pm โดย M029
ไปเรื่อง เรือดำน้ำ
โดย jataz2 พ 26 เม.ย. 2017 5:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
11
พ 26 เม.ย. 2017 5:04 pm โดย jataz2
ทำการติดตั้ง Joomla 1.5 แล้ว Error ต้องแก้ไขยังไงคะ
โดย moomai พ 26 เม.ย. 2017 4:51 pm บอร์ด Joomla Development
8
29
พ 26 เม.ย. 2017 4:51 pm โดย moomai
กำลังศึกษาภาษา Python สงสัยว่าพอเราเขียนชุดคำสั่งเสร็จแล้วจะนำไปใช้งานยังไงครับ
โดย amorn_au พ 26 เม.ย. 2017 11:25 am บอร์ด Programming - C/C++ & java & Python
0
14
พ 26 เม.ย. 2017 11:25 am โดย amorn_au
browser cache คืออะไรค่ะ
โดย thatsawan พ 26 เม.ย. 2017 10:56 am บอร์ด Programming - PHP
0
20
พ 26 เม.ย. 2017 10:56 am โดย thatsawan
มาแล้ว Joomla 3.7 มาตามสัญญา
โดย mindphp อ 25 เม.ย. 2017 11:44 pm บอร์ด PHP News
1
92
อ 25 เม.ย. 2017 11:44 pm โดย mindphp
R - mdsoft_claim_goods (ระบบเคลมสินค้า)
โดย dawthana อ 25 เม.ย. 2017 9:50 pm บอร์ด อาร์ซีพี โกลบอล จำกัด
0
15
อ 25 เม.ย. 2017 9:50 pm โดย dawthana
HTML Error อยู่หน้าเดียวไม่รู้แก้ไขยังไงค่ะ
โดย thatsawan อ 25 เม.ย. 2017 5:17 pm บอร์ด HTML CSS
2
22
อ 25 เม.ย. 2017 7:01 pm โดย thatsawan
แก้ปัญหาอาเซน่อล
โดย jataz2 อ 25 เม.ย. 2017 3:38 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
17
อ 25 เม.ย. 2017 3:38 pm โดย jataz2
บ้าบอลกันไหม
โดย jataz2 อ 25 เม.ย. 2017 3:20 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
13
อ 25 เม.ย. 2017 3:20 pm โดย jataz2
พี่ค่ะอยากจะปรึกษา ระบบจัดการโปรโมชั่นสินค้า
โดย พิม ม. อ 25 เม.ย. 2017 10:07 am บอร์ด Programming - PHP
0
23
อ 25 เม.ย. 2017 10:07 am โดย พิม ม.
คำถาม ขอบเขต จะช่วยให้สนับสนุนการตัดสินใจสินค้าชิ้นนั้นมาจัดโปรโมชั่นอย่างไร
โดย บุคคลทั่วไป อ 25 เม.ย. 2017 10:02 am บอร์ด Programming - PHP
0
14
อ 25 เม.ย. 2017 10:02 am โดย บุคคลทั่วไป
รับสอน รับเขียนโปรแกรม รับปรึกษาโปรเจค ติดต่อ conzeptors@gmail.com
โดย บุคคลทั่วไป จ 24 เม.ย. 2017 4:58 pm บอร์ด Programming - PHP
0
29
จ 24 เม.ย. 2017 4:58 pm โดย บุคคลทั่วไป
Fbstart (เอฟบีสตาร์ท) คืออะไร
โดย bom_002 จ 24 เม.ย. 2017 11:37 am บอร์ด Microsoft Office Knowledge & line & Etc
0
21
จ 24 เม.ย. 2017 11:37 am โดย bom_002
มีวิธีเปลี่ยนจาก ip เป็น domain ไหมครับ
โดย mcmakdonal จ 24 เม.ย. 2017 10:44 am บอร์ด Joomla Development
1
33
จ 24 เม.ย. 2017 10:44 am โดย tsukasaz