2016-06-22 6 views
0

特殊文字の条件を作成したいとします。 の配列に特殊文字がある場合は、と表示されます。以外の場合は、のメッセージが表示されます。 私の配列は以下の通りです:配列内の特殊文字をチェックする方法は?

Array 
(
[0] => PRIVATE LIMITED 
[1] => *^%$32407 
[2] => 10481017062
[3] => 10481017062
[4] => 
[5] => *)@!#CID010 
[6] => SURYA 
[7] => 2016-06-14 08:17:49 
[8] => 840 
[9] => INR 
} 

だから私はこのような状態にしたいです。あなたは、配列をループまたはどちらかがPHP's、以下のようにin_array機能を使用でき

Array 
(
[0] => PRIVATE LIMITED 
[1] => 32407 
[2] => 10481017062
[3] => 10481017062
[4] => 
[5] => CID010 
[6] => SURYA 
[7] => 2016-06-14 08:17:49 
[8] => 840 
[9] => INR 
} 
+2

特別な文字は何ですか? – atoms

+3

"特殊文字"のようなものはありません。それは "特別な"ものでなければなりません。文字だけ、たくさんのエム・バガーたちがいる。だから、受け入れたい文字や拒否する文字を定義してください。 – arkascha

+0

特別なchar( '/ [\' ^£$%&*()} {@#〜?><>、| = _ +¬ - ]/')が見つかった場合は、メッセージ – priyank

答えて

1

;:

if(Special char found){ 
    echo "Special char found"; 
}else{ 
    echo "Special char not found"; 
} 

は、私は以下のように出力したいです

if(in_array($sSpecialChar, $aArray)){ 
    echo 'special char found'; 
}else{ 
    echo 'special char not found'; 
} 
1

あなたの配列をループし、正規表現でチェックすることができます。

foreach ($myArray as $item) { 
    if(preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $item)) { 
     echo "Special char found."; 
    } else { 
     echo "Special char not found."; 
    } 

} 
+1

私が提案したものよりもはるかに優れています....チェックするループを作っていただけでした。 – atoms

+0

見つからない場合、「特殊文字が見つかりません」と表示されません。 – Barmar

+0

@Barmar私はちょっと考えていると思っていた。おそらくあまり期待しすぎた。それにもかかわらず、私は答えによって更新しました。これで 'Special char not found.'と表示されるようになりました。申し訳ありませんが、私は無礼ではありませんでしたが、' else'文を書くことは可能です。 – codedge

0

あなたは条件必要:

preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/',$array_value) 

仕事:あなたの質問を変更しないでください

var_export(array_map(function($a){ 
    return preg_replace('/[\'!^£$%&*()}{@#~?><>,|=_+¬-]/','',$a); 
},array(
'KAYA LIMITED','*^%$32407', 
'104810170620123','104810170620123', 
'','*)@!#CID010','HDFC Bank','2016-06-14 08:17:49', 
'840','INR' 
))); 

を;)

あなたのchar -コメントです特別なチャーも! したがって、配列[1]、配列[5]および配列[7]には特殊な文字があります。

+0

あなたは明らかにあなたの正規表現に構文エラーがあります。 – deceze

+0

@decezeエスケープされたバックスラッシュまたは何ですか?それがテストされ、それが動作する場合! – JustOnUnderMillions

+0

はい。構文の強調表示さえもそれで壊れます。正規表現全体は赤(文字列リテラル)でなければなりませんが、文字列は '' 'で終わります。 – deceze

0

また、配列内の特殊文字をチェックする関数を作成することもできます。

function checkSpecialChar($array,$pattern){ 
    foreach($array as $k=>$val){ 
     if (preg_match($pattern, $val)){ 
      return true; 
     } 
    } 
    return false; 
} 

// define a pattern 
$pattern = '/[\'^£$%&*()}{@#~?><>,|=_+¬]/'; 
if(checkSpecialChar($array,$pattern)){ 
    echo "Special char found"; 
}else{ 
    echo "Special char not found"; 
} 

上記のパターンでは、日付書式は特殊文字とはみなされません。

1

アレイをループして、特殊文字を確認して削除します。特殊文字が見つかった場合は、変数を使用して記録します。

$special_found = false; 
foreach ($array as &$string) { // Use a reference so assignment will update the array 
    if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬]/', $string) { 
     $special_found = true; 
     $string = preg_replace('/[\'^£$%&*()}{@#~?><>,|=_+¬]/', '', $string); 
    } 
} 
if ($special_found) { 
    echo "Special char found"; 
}else{ 
    echo "Special char not found"; 
} 
関連する問題