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

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

ถ้าต้องการหาค่าที่แตกต่างกันใน อาร์เรย์ ทำอย่างไร ( find different value in array )


สืบเนื่องจาก วันนี้มีโปรแกรมเมอร์น้องใหม่ภายในแผนกเดินเข้ามาสอบถาม เกี่ยวกับว่าจะหา ค่าที่แตกต่างกันภายใน array นั้น จะทำอย่างไรได้บ้าง มี function ของ PHP ที่จะสามารถจัดการกับค่าเหล่านี้ได้หรือไม่ ? ตัวผมเองก็ความจำสั้น จำอะไรก็ไม่ค่อยได้ แต่พอนึกวิธีได้ในขณะนั้นก็เลยจัดแจง coding วิธีบ้านๆ ตามประสาคนความรู้น้อยให้น้องดูซะเลย (ไอ้เราก็ลืมเปิดดู manual ของ php  --*)

ดูตัวอย่าง การหาค่าที่แตกต่างกันใน อาร์เรย์

วิธีที่ 1.
$array = array('apple', 'orange', 'pear', 'banana', 'apple', 'pear', 'kiwi', 'kiwi');

$array_duplicate         = array();
$array_unique            = array();
$array_duplicate_cnt   = array();

foreach($array as $val){
 if(++$array_duplicate_cnt[$val] > 1){
  $array_duplicate[] = $val;
 }else{
    if( count (array_keys($array, $val)) == 1 ){ 
         $array_unique[]     = $val;
     }
 }
}

print_r($array_unique);
print_r($array_duplicate);


ผลลัพธ์ที่ได้
1.  ค่าที่แตกต่างกันใน อาร์เรย์ ( unique array )
Array
(
    [0] => orange
    [1] => banana
)

2.  ค่าที่เหมือนกันใน อาร์เรย์ ( duplicate array )
Array
(
    [0] => apple
    [1] => pear
    [2] => kiwi
)
อ้าาา .. แต่สำหรับ php แล้วการหาค่าที่แตกต่างกันภายใน อาร์เรย์ นั้น php ก็มี function ให้ใช้งานอยู่แล้วด้วย นั้นก็คือ array_unique() ซึ่งผลลัพธ์ที่ได้นั้น ก็จะเหมือนกับผลลัพธ์ แรกนั่นเอง สำหรับ Array Functions ใน php นั้นก็มี function  ให้เลือกใช้งานกันอยู่ โดยสามารถดูข้อมูลเพิ่มเติมได้ที่  php manual









วันพุธที่ 13 มีนาคม พ.ศ. 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อย่างง่าย ด้วยสะพานบอท