บทความ:
Perl
PHP
HTML
CSS
XML
DTD
XSD
RSS
WSDL
Linux
Site Map
Board
Connect Us: facebooktwitter

การแยกคำจาก String

นนทชัย ทรัพย์ทวีพงศ์ 2009-08-02 19:13:26  ให้คะแนนบทความนี้(0)  ลดคะแนนบทความ(0)  จำนวน Comment(0)  จำนวนคนอ่าน(670)  

การแยกคำจาก String ด้วย Split()

ในการจัดการข้อมูลนั้น ข้อมูลบางข้อมูลเราต้องการแยกออกมาเป็นส่วน ๆ เช่นข้อมูลที่เป็นวันที่ 12-06-2551 เมื่อเราต้องการเก็บวันที่ เดือน ปี ไว้ในตัวแปรเราก็จำเป็นต้องการแยกสตริงออกมาตาม pattern ที่เรากำหนดในที่นี้ถ้าเราต้องการเก็บค่าวันที่ เดือน ปี เราจะต้องใช้ pattern "-" เพื่อแยกออกมา เพื่อความเข้าใจที่ง่ายขึ้น เราไปดูตัวอย่างการใช้งานกันดีกว่าครับ

split(/expression/, $var);
# เป็นรูปแบบการใช้งาน
$str = "192.168.2.110 Tony James [01-05-09:12:20:37]";
@arrStr = split(/\s/, $str);
# เป็นการตัดคำเป็นส่วน ๆ โดยใช้ expression \s (ช่องว่าง 1 ตัว)
# แล้วเก็บคำที่ตัดได้แต่ละคำไว้ในตัวแปรอะเรย์
# @arrStr = ("192.168.2.110", "Tony", "James", "[01-05-09:12:20:37]");
# หรือเราอาจจะทำการเก็บข้อมูลต่าง ๆ เป็นตัวแปร Scalar (ตัวแปรตัวเดียว) ได้ดังนี้
($ip, $name, $surname, $datetime) = split(/\s/, $str);

$date = "12-05-2009";
($dayno, $monno, $yearno) = split(/-/, $date);
# จะได้ $dayno = 12, $monno = 05, $yearno = 2009

แต่ถ้าในบางกรณีที่ตัวแปรสตริงนั้นมีการเว้นช่องว่างไม่เท่ากัน เช่น 192.168.2.110##Tony#James###[01-05-09:12:20:37] ซึ่งในที่นี้เพื่อให้เห็นภาพชัดเราจะใช้ expression # แทน \s เมื่อเราต้องการให้ได้ผลลัพธ์แบบตัวอย่างที่แล้ว (ซึ่งเป็น expression ที่ตายตัว เท่ากัน) เราต้องใช้คำสั่งดังนี้

$str = "192.168.2.110##Tony#James####[01-05-09:12:20:37]";
@arrStr = split(/#.+/, $str);
# เป็นการตัดคำเป็นส่วน ๆ โดยใช้ expression #.+
# ซึ่งหมายความว่าในแต่ละ expression นั้นต้องมี # อย่างน้อย 1 ตัวและมีกี่ตัวก็ได้ (#, ##, ###) 
# @arrStr = ("192.168.2.110", "Tony", "James", "[01-05-09:12:20:37]");
แหล่งที่มา:

Related Article

Related Download

ไม่มีรายการดาวน์โหลด


Login  Login
ค้นหา  Search