2011-02-07 11 views
2

私のDBに£記号を掲示するときに問題があります。その前にいくつかの奇妙な文字が追加されているようです。私は、DBに入る前に記号を取り除いて、データを読むときに記号をもう一度追加することを最善のことと決めました。PHP、MySQLに投稿する前に通貨記号を取り除く

私の$変数をとり、それを送信してDBに送ることができる新しい$ variable_newを作成する単純なPHP関数がありますか?

おかげで、ジョニー

+1

これらのどれもあなたの質問を解決できなかった理由を教えてください:http://stackoverflow.com/search?q=remove+character+from+string+php – Gordon

答えて

4

これはあなたが探しているものである必要があります。

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

+0

の前に£100を追加するように見えるので、それは素晴らしいことです、ありがとう。 – Cliftwalker

+0

は文字列全体を保存します: 'substr($ variable、1)' –

0

は私が迅速な解決としてstring replaceを使用することになり、理想的に私は最初の場所で変数にシンボルを追加することはありません。

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

おそらく最も簡単な解決策は、文字エンコードを正しく行うことです。まず、あなたがutf-8であなたに情報を送るウェブブラウザを持っていることを確認してください。

あなたのデータベースがutf-8を格納しているかどうかを確認してください。私はMySQLが文字エンコーディングを気にかけていることを知っています。文字セットが正しくない場合、変換は(PHPやMySQLのどこかで)起こります。

私が入れ:はAddDefaultCharset UTF-8

を、すべてのサイトのための私の.htaccessファイル内のすべてのデータをUTF-8

1

に私に送られているあなたは、あなたの中からSUBSTRING機能を使用できることを確認しますクエリ

SUBSTRING(fieldName FROM 1) 

またはチェックアウト:

シンボルをサポートするために、データベースの文字セットを変更する方法を知っています。

+0

私はこの変更をutf-8にしようとしましたが、問題を解決していないようだ。何が起こっているのか分かりません。私のINSERTクエリが実行され、£記号がある場合は、記号 – Cliftwalker

0

あなたはいつもちょうどstr_replace()を使用するか、すべての非数値/ドット/コンマ文字を置き換えるためにpreg_replaceを使用することができます。しかし、私はいずれかが最善の解決策ではないと思います。

私は、あなたのスクリプトを変更して、シンボルが決して数値の上に置かれないようにすることをお勧めします。ただし、シンボルを追跡し、データベースの別の列に格納して、使用された通貨が分かるようにしてください。厳密な数値を持つことで、将来もっと必要なことを(もっと簡単に)行うことができます。

関連する問題