2017-08-25 6 views
2

に文字列をきれいにする方法(無セット長が、一般< 10)、彼らの入力の結果は、予測できませんでした。最もエレガントな入力のみ</p> <blockquote> <p>数コンマ数コンマ数</p> </blockquote> <p>にクライアントに指示した後にのみ、カンマ区切り符号

$test= trim($test,","); //Remove any leading or trailing commas 
$test= preg_replace('/\s+/', '', $test);; //Remove any whitespace 
$test= preg_replace("/[^0-9]/", ",", $test); //Replace any non-number with a comma 
:これまでのところ、私は組み合わせをしようとしています

3,6,5 

:私は、最も簡単、かつ確実に終わる可能性がどのように

3,6 ,bannana,5,,*, 

次の例の入力を考えると

しかし、私はそれに物事を投げつける前に...おそらく正規表現の棺からエレガントな方法はありますか?

純粋に抽象的な意味で
+3

入力を掃除する代わりに、javacriptを使用して入力検証を行う必要があります –

+0

これはとても良いアイデアです。 – mayersdesign

+0

入力タイプ番号https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input – rypskar

答えて

3

これは私がしたいものです。

$test = array_filter(array_map('trim',explode(",",$test)),'is_numeric') 

例: http://sandbox.onlinephpfunctions.com/code/753f4a833e8ff07cd9c7bd780708f7aafd20d01d

+0

これは非常に興味深いものです。特に配列と結びつきたいのですが。 – mayersdesign

+0

これは完璧に機能しました私の場合は非常に感謝します。私はユーザーがドットをコンマで入力することを想定していたので、そのためにpreg_replaceを使用し、コードを使用して配列に変換したと仮定しました。上記のコメントごとにjavascript検証を追加するようになりました。再度、感謝します。 – mayersdesign

1
<?php 
$str = '3,6 ,bannana,5,,*,'; 
$str = explode(',', $str); 
$newArray = array_map(function($val){ 
    return is_numeric(trim($val)) ? trim($val) : ''; 
}, $str); 
print_r(array_filter($newArray)); // <-- this will give you array 
echo implode(',',array_filter($newArray)); // <--- this give you string 
?> 
+0

私はこのアイデアを非常に感謝していますが、正規表現のストリッピング演習になると思っていたためにたくさんのコードがあるようです。 「シンプルな」方法ではできない理由を説明してください。 – mayersdesign

+0

文字列には数字、単語、スペースが含まれているためです。トリム、数字のチェック、フィルタリングが必要です。 –

+0

実際には、受け入れられた答えと同じ量のコードです。 – localheinz

1

ここ

$string = '3,6 ,bannana,5,-6,*,'; 

preg_match_all('#(-?[0-9]+)#',$string,$matches); 

print_r($matches); 

意志の出力は、正規表現を使用した例です

Array 
(
    [0] => Array 
     (
      [0] => 3 
      [1] => 6 
      [2] => 5 
      [3] => -6 
     ) 

    [1] => Array 
     (
      [0] => 3 
      [1] => 6 
      [2] => 5 
      [3] => -6 
     ) 

) 

$matches[0]を使用してください。
負の数を必要としない場合は、正規表現ルールの最初のビットを削除するだけです。

+0

ありがとう、私は正規表現の方法があることを知っていました....そこには常にあります!ハハ – mayersdesign

関連する問題