แสดงบทความที่มีป้ายกำกับ function แสดงบทความทั้งหมด

str_replace กับปัญหา “\” (backslash)


พอดีวันนี้ลองเข้าไปภายในกลุ่มของ ชมรมคนทำเว็บ ก็ไปเจอข้อความน่าสนใจเกี่ยวกับปัญหาที่ตั้งกระทู้ถามไว้ว่า
ผมติดปัญหาแก้ไม่ได้ครับ พอดีในไฟล์ PHP
"
$xxx = “aaaa\bbbb”;
ผมต้องการให้ ตัว “\” (backslash) เปลี่ยนเป็นตัว _ (underscore)
ผมลองใช้ str_replace(”\”,”_”,$xxx);
"
ไม่ได้ครับ มีใครแนะนำวิธีที่ถูกต้อง หรือวิธีอื่นบ้างครับ ขอบคุณครับ .
ลองดูจากรูปด้านบนจริงๆ แล้วก็น่าจะถูกต้องแล้ว แต่ลองนำข้อมูลมาทดสอบดู เอ้ยย ไม่ได้จริงๆ ด้วยแหะ ปัญหานี้เราก็ไม่เคยเจอซะด้วยซิ ก็เลยลองไปค้นหาข้อมูลดู พบว่า ถ้าเราต้องการ \ เป็นตัวแปลหนึ่งตัวต้องใช้ \\ สองตัว ตามตัวอย่าง เช่น

ถ้าเราต้องการให้ตัวแปล a เก็บค่า \ ตัวก็ใช้ \\ สองตัว ตัวอย่างเช่น
$a="\";    // วิธีที่ผิด
$a="\\";   // วิธีที่ถูก
และ ถ้าต้องการ  \\ สองตัว ก็ให้ใช้    \\\\  สี่ตัว

และถ้าเราต้องการ ' " ! @ # $ % ^ & * ( ) { } [ ] \ | + - ตัวใดตัวหนึ่งขึ้นมา ให้ใส่ \ แล้วตามด้วยตัวอักษระพิเศษเหล่านี้ (บางตัวอาจสร้างได้โดยไม่ต้องใส่ \ นำหน้า) ตัวอย่างเช่น
\! จะได้ !
\' จะได้ '
\" จะได้ "

สำหรับปัญหานี้ตามด้านบน วิธีใช้งานที่ถูกต้อง

1. str_replace(“\\”,”_”,$xxx);
2. preg_replace(‘{\\\}’, ‘_’, $xxx)
หลักการคือ ใช้ \ นำหน้า อักษรพิเศษนั่งเอง

ข้อมูลเพิ่มเติม
http://php.net/manual/en/regexp.reference.escape.php




วันพุธที่ 20 มีนาคม พ.ศ. 2556
Posted by caeruz

MySQL กับการสร้าง Functions ใช้งานเอง (User-Defined Functions to MySQL)


สำหรับ SQL นั้นมี ฟังก์ชันมาตรฐาน (Built-In Function) ที่สามารถใช้งานได้อย่างมีประสิทธิภาพ
และเตรียมไว้พร้อมสำหรับผู้ใช้งานอยู่แล้วสามารถเรียกใช้ได้เลย เช่น ฟังก์ชัน LEFT (string, length) , RIGHT (string, length) , MID (string, position, length)  เป็นต้น แต่บางครั้งข้อมูลที่เราต้องการอาจจะมีความจำเป็นที่จะต้องปรับแต่งข้อมูลก่อนเพื่อการแสดงผลที่ถูกต้องตามความต้องการ ซึ่งด้วยเหตุนี้นั่นเองจึงเป็นเหตุผลว่าทำไมเราจึงจำเป็นต้องสร้าง function ของ SQL ขึ้นมาไว้ใช้งานเอง              (User-Defined Function: UDF)  ฟังก์ชันที่เราสร้างเองเป็นยังไง และสามารถสร้างยังไง เรามาดูกันเลยครับ

ตัวอย่างการสร้างฟังก์ชั่นใช้งานเอง

CREATE FUNCTION `SumValues`(`Val1` int,`Val2` int) RETURNS int(11)
BEGIN
RETURN (Val1 + Val2);
END
จากตัวอย่าง เป็น function สำหรับหาผลรวมของตัวเลข ซึ่งเราสามารถเรียกใช้งานได้ดังนี้
SELECT SumValues(1,2) AS SumOfTwoValues

และผลลัพธ์ที่ได้คือ SumOfTwoValues >> 1+2 = 3 นั่นเอง

เราสามารถศึกษารายละเอียดเพิ่มเติมเกี่ยวกับ การเพิ่มฟังก์ชั่นใหม่ไปยัง MySQL ( UDF ) รวมถึง
ฟังก์ชันมาตรฐาน (Built-In Function) ต่างๆเพิ่มเติมได้ที่   http://dev.mysql.com/doc/




วันอังคารที่ 19 มีนาคม พ.ศ. 2556
Posted by caeruz

Categories

Popular Post

ขับเคลื่อนโดย Blogger.

- Copyright © Stimulus ♥ Hooked on Developer -Metrominimalist- Powered by Blogger - Designed by Johanes Djogan - Yahoo bot last visit powered by MyPagerank.Net -

สะพานบอทฟรี - ติดgoogleอย่างง่าย ด้วยสะพานบอท