เอา เครื่องหมาย ฿ ออกจาก string ยังไงครับ

เริ่มโดย O.o!!, 06 กรกฎาคม 2011, 02:16:07

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

O.o!!

สมมุติ ผมมี 

$str="฿21.58";

ผมต้องการแค่   21.58  อ่ะครับ

ลองใช้ str_replace แล้วไม่ได้อ่ะ

ดูเหมือนจะง่าย แต่เขียนโค๊ดมานานหล่ะไม่ได้สักที   :wanwan031: :wanwan031:

hero-nana

รับเขียนโปรแกรม magento module, แก้ไข theme หรืออื่นๆ สนใจ pm มาครับ

vii

[direct=https://rundiz.com]PHP, HTML, JS, CSS[/direct]

O.o!!

อ้างถึงจาก: hero-nana ใน 06 กรกฎาคม 2011, 02:19:18
$str="฿21.58";

$str= str_replace("฿", "", $str);

http://php.net/manual/en/function.str-replace.php

ไม่ เวิร์ครับ

อ้างถึงจาก: vii ใน 06 กรกฎาคม 2011, 02:19:41
http://www.php.net/manual/en/function.floatval.php

ลองตามนี้แล้ว


<?php
$var 
'฿21.58';
$float_value_of_var floatval($var);
echo 
$float_value_of_var// 122.34343
?>



ผลออกมาเป็น 0  ครับ

:wanwan031: :wanwan031:

hero-nana

#4


แสดงว่าcodeคุณไม่ใช่แบบที่ยกตัวอย่างมาแน่นอน อาจเป็นcodeที่เข้ารหัสมาเช่น &#xE3F ;
รับเขียนโปรแกรม magento module, แก้ไข theme หรืออื่นๆ สนใจ pm มาครับ

vii


$str 
"฿21.58";
$val1 preg_replace("/([^0-9\.,-])/"""$str);
echo 
floatval($val1);
[direct=https://rundiz.com]PHP, HTML, JS, CSS[/direct]

O.o!!

อ้างถึงจาก: hero-nana ใน 06 กรกฎาคม 2011, 03:07:13


แสดงว่าcodeคุณไม่ใช่แบบที่ยกตัวอย่างมาแน่นอน อาจเป็นcodeที่เข้ารหัสมาเช่น &#xE3F ;

ใช่ครับ จริงๆแล้วมันเป็น form ครับ ถูก submit มาเก็บไว้ใน variable แล้วคราวนี้จะเอาเครื่องหมายนั่นออก แต่เรื่องถูกเข้ารหัสผมก็ไม่แน่ใจว่าทำไมมันจะอยู่ดีๆเข้ารหัส ( ไม่มีความรู้ ) แต่ที่แปลกคือ ถ้าผม โค๊ดของท่านนี้


$str = "฿21.58";
$val1 = preg_replace("/([^0-9\.,-])/", "", $str);
echo floatval($val1);


แทนที่มันจะ echo  21.58  แต่เป็น  364721.58   ไม่รู้ว่า   ไอเลข 3647 มาจากใหน  ก็เลยต้อง str_replace เอา 3647 ออกอีกที 
*ถ้าผ่านมาอีกทีก็ช่วยอธิบายหน่อยครับว่า เลย 3647 มาจากใหน  :wanwan008:

+1 ทั้ง 2 ท่านครับ  :wanwan020:

vii

อ้างถึงจาก: cjmling ใน 06 กรกฎาคม 2011, 08:44:23
อ้างถึงจาก: hero-nana ใน 06 กรกฎาคม 2011, 03:07:13


แสดงว่าcodeคุณไม่ใช่แบบที่ยกตัวอย่างมาแน่นอน อาจเป็นcodeที่เข้ารหัสมาเช่น &#xE3F ;

ใช่ครับ จริงๆแล้วมันเป็น form ครับ ถูก submit มาเก็บไว้ใน variable แล้วคราวนี้จะเอาเครื่องหมายนั่นออก แต่เรื่องถูกเข้ารหัสผมก็ไม่แน่ใจว่าทำไมมันจะอยู่ดีๆเข้ารหัส ( ไม่มีความรู้ ) แต่ที่แปลกคือ ถ้าผม โค๊ดของท่านนี้


$str = "฿21.58";
$val1 = preg_replace("/([^0-9\.,-])/", "", $str);
echo floatval($val1);


แทนที่มันจะ echo  21.58  แต่เป็น  364721.58   ไม่รู้ว่า   ไอเลข 3647 มาจากใหน  ก็เลยต้อง str_replace เอา 3647 ออกอีกที  
*ถ้าผ่านมาอีกทีก็ช่วยอธิบายหน่อยครับว่า เลย 3647 มาจากใหน  :wanwan008:

+1 ทั้ง 2 ท่านครับ  :wanwan020:

เป็นเพราะว่า ฿ ของคุณไม่ได้มาจากตัว ฿ จริงๆ แต่มันมีการไปเข้ารหัสมัน (คงใช้ htmlentities()) ทำให้มันกลายเป็น ฿ ซึ่งไอ้ตัว ฿ นี่เองที่เมื่อเรนเดอร์ผ่านเบราเซอร์แล้วจะเป็นตัว ฿
ทางแก้ คุณอาจต้องหาทางทำให้มันกลับมาเป็นตัวอักษรของมันเองก่อน แล้วทำการ preg_replace หรืออาจทำการ preg_replace พวกคำที่ขึ้นต้นด้วย & และจบด้วย ; ให้มันว่างเปล่าก่อน.

echo html_entity_decode("฿"ENT_QUOTES"UTF-8")."<br />\n";
[direct=https://rundiz.com]PHP, HTML, JS, CSS[/direct]

O.o!!

ขอบคุณครับคุณ vii ที่กลับมาอธิบายเพื่อเป็นความรู้ครับ

  :wanwan017:

mistera

ลอง echo ตัว ฿ แล้ว วิวซอส ดูครับ แล้วใช้ str_replace ครับ
[direct=http://www.gooentertain.com]Entertainment[/direct] [direct=http://www.vofitness.com]Fitness[/direct] [direct=http://www.seegadget.com]Technology[/direct]
[direct=http://www.carreviewsite.com]Auto Car[/direct]
[direct=http://www.iq-cash.com]Business[/direct]

O.o!!

อ้างถึงจาก: mistera ใน 06 กรกฎาคม 2011, 22:07:06
ลอง echo ตัว ฿ แล้ว วิวซอส ดูครับ แล้วใช้ str_replace ครับ

ขอบคุณครับ คราวนี้เข้าใจแจ่มแจ้งเลย ว่ามันอย่างนี้นี่เอง   :o :o