我有一个像2 661,38 €
这样的字符串,我需要回复661,38
,但我无法达到解决方案
我已完成以下代码:
$connection=mysql_connect('localhost','root','****') or die(mysql_error());
mysql_select_db('DB',$connection) or die(mysql_error());
$sql = mysql_query("select distinct prod_price COL from TABLE") or die(mysql_error());
?>
<?php
while($row=mysql_fetch_object($sql)):?>
<?php
if(mysql_num_rows($sql)>0){
$number = $row->COL;
$temp=explode(' ',$number);
$number = preg_replace("/[^0-9]/", '', $temp[0])/100;
echo number_format($number, 2, ',', ' '). "<br />";
}
?>
<?php endwhile;?>
有人可以帮我从第一个地方删除那个吗?
我得到的解决方案并没有帮助我,所以我将整个代码用于了解我遇到的情况......请参阅代码片段......上面的代码给了我以下注意事项:
注意:未定义的偏移量:第26行/var/www/html/login/str.php中的2 0,00
答案 0 :(得分:1)
如果将2 661,38 €
ASCII字符串转换为十六进制数字,则会看到以下序列:32 C2 20 36 36 31 2C 33 38 C2 20 E2 82 AC
UTF-8中的此序列为2 661,38 €
,带有两个控制字符(\xC2
)。
我认为,这严格来说是编码问题,因此您必须将原始字符串(使用原始字符集)转换为UTF-8。
您可以使用以下表达式在MySQL中执行此操作:
CONVERT(CONVERT(YourColumn USING binary) USING utf8)
如果原始值无法转换为UTF8,则可能返回NULL,但如果它是有效的UTF-8序列,则它将被转换。
另外请确保连接和PHP文件的编码也是UTF-8。不同的编码可能会导致意外行为。
答案 1 :(得分:0)
用空格分割该字符串,10应用preg_replace()
<?php
$number = "2 661,38 €";
$temp=explode(' ',$number);
$number = preg_replace("/[^0-9]/", '', $temp[1])/100;
echo number_format($number, 2, ',', ' ');
?>
<强> DEMO 强>
答案 2 :(得分:0)
首先,您需要更改DB表。转到表结构并将排序规则设置更改为utf8_general_ci,然后需要设置标题
答案 3 :(得分:0)
这将除掉数字和逗号之外的所有内容:
$number = preg_replace("/[^0-9,]*/", '', $your_weird_pattern);