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

วันนี้เรามาดูวิธีดึงตัวเลขออกจากข้อความกัน

ถ้าสมมติว่าผมมีข้อความชุดหนึ่ง คือ

“แตงโมราคา 120.50 บาท”
“แตงกวาราคา 15 บาท”

ผมต้องการทราบราคารวมของสินค้าทั้งสอง ต้องทำยังไง

วิธีการคือ ผมจะดึงเอาเฉพาะตัวเลขออกมาจากข้อความ ด้วยโค้ดนี้

$product1 = 'แตงโมราคา 120.50 บาท' ;
$product2 = 'แตงกวาราคา 15 บาท' ;
 
preg_match("/[[:digit:]]+\.?[[:digit:]]*/", $product1 , $price1 ) ;
preg_match("/[[:digit:]]+\.?[[:digit:]]*/", $product2 , $price2 ) ;
 
echo $price1[0]+$price2[0] ;

ผมใช้คำสั่ง preg_match ดึงเอาเฉพาะตัวเลขออกมาจากข้อความ ไปเก็บไว้ในตัวแปร $price1 และ $price2 คำสั่ง preg_match นี้เวลามันเอาผลลัพธ์ไปเก็บในตัวแปร มันจะเก็บเป็น array ฉะนั้นตอนเอาราคาของแตงโมและแตงกวามาบวกกัน ผมจึงต้องใช้อย่างนี้ $price1[0]+$price2[0]

เคล็ดวิชาของโค้ดชุดนี้อยู่ที่ Regular Expression

[[:digit:]]+\.?[[:digit:]]*

บอกไว้ก่อนว่า โค้ดชุดนี้ไม่ซัพพอร์ตตัวเลขที่มีเครื่องหมาย , คอมม่า ถ้าข้อความของท่านอาจจะมีเครื่องหมายนี้ ให้ท่านใช้ฟังก์ชั่น str_replace แทนที่เครื่องหมายคอมม่าด้วยค่าว่างเสียก่อน

อ่าน Regular Expression เพิ่มเติมได้ที่นี่ http://www.nextproject.net/contents/default.aspx?00103