2011-02-07 74 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來替換所有非數字/點/逗號字符。但是,我認爲任何一個都不是最好的解決方案。

我認爲最好是改變你的腳本,以便符號永遠不會附加到數值上。不過,請記住該符號,也可以將其存儲在數據庫的單獨列中,以便知道使用了哪種貨幣。擁有嚴格的數值可以讓您(更容易)在未來做更多的事情。