2011-02-07 36 views
2

我在发布£符号到我的数据库时遇到了一个问题,它似乎在它之前添加了一些奇怪的字符。我决定,最好的做法是在符号进入数据库之前去掉符号,并在读取数据时再次将其添加回来。PHP,去掉发布到MySQL之前的货币符号

是否有一个简单的PHP函数需要我的$变量,在我发送它之前取出特定的字符,然后创建一个新的$ variable_new,我可以发送到数据库。

感谢,强尼

+1

请指出为什么这些帮助解决您的问题:http://stackoverflow.com/search?q=remove+character+from+string+php – Gordon 2011-02-07 17:48:04

回答

4

这应该是你在找什么。

$variable_new = str_replace('£','',$variable);

+0

之前添加了一个£100。这实现了诀窍,好东西,谢谢。 – Cliftwalker 2011-02-07 18:10:03

0

我会用string replace作为一个快速的解决办法,但最好我永远不会符号添加到变量摆在首位。

$newvar = str_replace('£', '', $oldvar); 
1

最简单的(也是最好的)解决方案可能是让您的字符编码正确。首先确保你已经有网页浏览器发送你的东西在utf-8

然后确保你的数据库正在存储UTF-8或编码ignostic。我知道MySQL关心字符编码,如果你的字符集不正确,转换就会发生(在PHP和/或MySQL的某处)。

我把:AddDefaultCharset UTF-8

在我的所有网站的.htaccess文件

,以确保所有的数据被发送到我的UTF-8

1

可以使用SUBSTRING功能从内部的查询

SUBSTRING(fieldName FROM 1) 

或检查出:

要知道如何改变你的数据库,以支持符号的字符集。

+0

我试图做到这一点改变MySQL到utf-8,但它似乎没有解决问题。我不确定发生了什么事。当我的INSERT查询运行并且有£符号时,它似乎在符号 – Cliftwalker 2011-02-07 18:11:13

0

你总是可以只使用str_replace(),或者你可以使用的preg_replace来替换所有非数字/点/逗号字符。但是,我认为任何一个都不是最好的解决方案。

我认为最好是改变你的脚本,以便符号永远不会附加到数值上。不过,请记住该符号,也可以将其存储在数据库的单独列中,以便知道使用了哪种货币。拥有严格的数值可以让您(更容易)在未来做更多的事情。