Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > bug ในโค๊ดนี้ มี 2 จุด มีเทคนิคสามารถแก้ได้มั้ยครับ



 

bug ในโค๊ดนี้ มี 2 จุด มีเทคนิคสามารถแก้ได้มั้ยครับ

 



Topic : 095955



โพสกระทู้ ( 471 )
บทความ ( 0 )



สถานะออฟไลน์




Code (PHP)
<?php
function slug($str){
	$str = preg_replace('/[^A-Za-z0-9-]/', '-', $str);
	$str = preg_replace('/-+/', " ", $str);
	return $str;
}
$text='C$';
$text_not_have_special_char = slug($text);
echo $text_not_have_special_char;
?>
</br>
<?PHP
echo strlen($text_not_have_special_char);
?>


จากโค๊ดด้านบน
$text ให้มีค่าเท่ากับ C$
Echo อันแรกให้ echo เฉพาะตัวอักษรที่ไม่ใช่ special char ก็ echo C อันนี้ OK

ส่วน echo อันที่สอง ให้นับจำนวนตัวอักษรหลังจากตัดตัว special char ไปแล้ว ก็คือ ต้องเท่ากับ 1 แต่ผลออกมากลับ echo 2 เฉยเลย
ทำไมถึง ได้ 2 ครับ งงเลย



Tag : PHP, MySQL









ประวัติการแก้ไข
2013-05-31 22:28:13
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-05-31 22:27:25 By : peap View : 873 Reply : 6
 

 

No. 1



โพสกระทู้ ( 437 )
บทความ ( 3 )



สถานะออฟไลน์


มันมีเคาะอยู่ ลองลบเคาะ หรือ เพิ่มอีกเคาะดู ค่ามันจะเปลี่ยนไป
Code (PHP)
$str = preg_replace('/-+/', " ", $str); 







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-01 00:18:37 By : randOmizE
 


 

No. 2



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ดูขั้นตอนการทำงานของมันนะครับ
<?php
function slug($str){
	// แทนที่อักษรที่ไม่ใช่ A-Z, a-z, 0-9 และ - ด้วย -
	//เช่น '<br />' จะกลายเป็น '-br---'
	$str = preg_replace('/[^A-Za-z0-9-]/', '-', $str);
	// แทนที่ - ที่จะติดกันกี่ตัวก็ตาม ด้วย ช่องว่าง
	//เช่น 'Yes-----No-------Yes' จะกลายเป็น 'Yes No Yes'
	$str = preg_replace('/-+/', " ", $str);
	return $str;
}
$text='C$';
$text_not_have_special_char = slug($text);
// ดังนั้น C$ จะแปลงเป็น 'C-' ก่อนใน preg_replace() ครั้งแรก
// และจะกลายเป็น 'C ' ใน preg_replace() ครั้งที่สอง
// สังเกตว่ามันก็ยังเป็น 2 ตัวอักษรอยู่ดี ซึ่งถูกต้องแล้ว เพราะช่องว่าง ' ' ก็นับรวมเป็น 1 ตัวอักษร
echo $text_not_have_special_char;
?>
</br>
<?PHP
echo strlen($text_not_have_special_char);
?>




ประวัติการแก้ไข
2013-06-01 02:22:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-01 02:21:54 By : cookiephp
 

 

No. 3



โพสกระทู้ ( 471 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : cookiephp เมื่อวันที่ 2013-06-01 02:21:54
รายละเอียดของการตอบ ::
ผมมองข้ามไปได้ไงเนี๊ยะ TT ขอบคุณทุกท่านครับ

แต่ขอถามเพิ่มเติมนะครับ
ถ้าเปลี่ยนจาก $text='C$'; คือ $text มีค่าเท่ากับ C กับ $
ให้เป็น $text='C'$' คือ $text มีค่าเท่ากับ C กับ ' กับ $
หรือให้เป็น $text="C"$" คือ $text มีค่าเท่ากับ C กับ " กับ $



จะเกิดการ error ไม่ทราบว่าจะทำอย่างไรไม่ให้ error ครับ
( คือเราไม่สามารถไปห้าม user ใส่ ' หรือ " ได้น่ะครับ )



ประวัติการแก้ไข
2013-06-01 23:40:42
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-01 23:14:55 By : peap
 


 

No. 4



โพสกระทู้ ( 471 )
บทความ ( 0 )



สถานะออฟไลน์


.


ประวัติการแก้ไข
2013-06-02 00:09:31
2013-06-02 00:34:55
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-02 00:09:14 By : peap
 


 

No. 5



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

เอิ่ม

เข้าใจ "สตริง" หรือเปล่าครับ

สตริงคือ "ข้อมูล" ที่ครอบด้วย ' หรือ "
// เฉพาะสีเขียวที่จะกลายเป็นข้อมูลเข้าไปใน $a $a = 'ABC';


เพราะสตริงมันต้องครอบด้วย ' หรือ " ดังนั้นถ้าทำอย่างที่คุณบอกมันจะเป็นงี้
// จะกลายเป็น parse error ไปเสีย // เพราะเมื่อถึงตรงสีม่วง ก็จะกลายเป็นไวยากรณ์ PHP ที่ผิดไปแล้ว $text = 'C'$';


แล้วจะทำยังไงให้ใส่ "ตัวครอบ" ลงในสตริงได้ คำตอบคือ "escape ด้วย backslash" ครับ
// ถ้าเปิดด้วย ' และอยากให้มี ' เป็นค่าของสตริง $text = 'C\'$'; // หรือ ถ้าเปิดด้วย " และอยากให้มี " เป็นค่าของสตริง $text = "C\"$";


ป.ล. ผมว่าหลายๆ คนเริ่มเขียนและศึกษา PHP แบบไม่เป็นขั้นเป็นตอนเอามากๆ
ลองไปศึกษาพื้นฐานเพิ่มเติมนะครับ เพราะเรื่องนี้มันเป็นพื้นฐานเบื้องต้นมากๆ
จริงๆ ควรต้องรู้ก่อนพวกเรื่องการเชื่อมต่อฐานข้อมูลเสียอีก


ประวัติการแก้ไข
2013-06-02 01:28:21
2013-06-02 01:30:09
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-02 01:27:39 By : cookiephp
 


 

No. 6



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

อันนี้แม้ไม่ได้ถาม แต่ก็อยากแนะนำนะครับ

นี่คือคู่มือ PHP ครับ
http://www.php.net/manual/en/index.php

นี่เรื่องพื้นฐานเกี่ยวกับสตริงครับ
http://www.php.net/manual/en/language.types.string.php

ลองอ่านดูครับ ขอให้อดทนลองอ่านดูแม้จะเป็นภาษาอังกฤษ เพราะภาษาอังกฤษที่ใช้ในคู่มือของ PHP นี่ไม่ได้ยากครับ
ซึ่ง PHP เป็นภาษาโปรแกรมที่ได้รับการยอมรับกันเลยว่า มีคู่มือที่ดีที่สุดภาษาหนึ่ง
ต่อให้อ่านไม่ค่อยรู้เรื่อง แต่ถ้าดูโค้ดตัวอย่าง บางครั้งเราจะเก็ตได้เองนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-02 02:32:40 By : cookiephp
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : bug ในโค๊ดนี้ มี 2 จุด มีเทคนิคสามารถแก้ได้มั้ยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่