2011-08-02 8 views
1

これがこの質問をする場所であるかどうかわかりませんが、私は決してしません。番号PHPを使用した消毒

コードから数値以外の文字をすべて削除しようとしていますが、FILTER_SANITIZE_NUMBER_INTではプラス記号とマイナス記号が使用できます。コードを追加してPHPを使用してそれらを削除するにはどうすればいいですか?

ここに私のコードです。

$a = filter_var($a,FILTER_SANITIZE_NUMBER_INT); 
+0

の可能性のある重複した[PHP - 文字列からすべての非数値文字を削除](http://stackoverflow.com/questions/33993461/php-remove-all-non-numeric-characters-from-a -string) – rlemon

答えて

3

この場合、プラス(+)記号を削除するために結果をintにキャストするだけでよいでしょう。

$a = (int) filter_var($a,FILTER_SANITIZE_NUMBER_INT); 

あなたはマイナスをドロップする必要がある場合は( - )、同様に署名を効果的数の絶対値を取得して、PHPのABS()関数を使用します。

$a = abs((int) filter_var($a,FILTER_SANITIZE_NUMBER_INT)); 
+0

"123-456"は "123"を返すので、私が望む "123456"を返さないからDownvoted。 – Sasse

+0

"123-456"はダッシュを含んでいるためintではありません。あなたは 'str_replace( ' - '、 ''、" 123-456 ")' http://php.net/manual/en/function.str-replace.phpを探しています。 – bitsoflogic

+0

OPの質問を読まれましたか?彼は「プラスとマイナス記号」の削除を含むすべての「数字以外の文字」を削除しようとしています。 – Sasse

0

私は、以下の溶液を用いて行きました。大文字の「D」は「非数字」を表します。

public static function sanitize_integer($str) 
{ 
    return (int) preg_replace('/\D/', '', $str); 
} 
関連する問題