แสดงบทความที่มีป้ายกำกับ escape sequence คือ อะไร แสดงบทความทั้งหมด
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
