2017-05-24 7 views
1

私は奇妙な質問をしています。指定された文字列に特殊文字が含まれているかどうかを確認しようとしています。以下のコードは動作していますが、大括弧[]で条件を免除されているようです。これで私を助けることができますか?ありがとうございました。文字列に角括弧が含まれているかどうかを確認する方法

$string = 'starw]ars'; 

    if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $string)) { 
     echo 'Output: Contains Special Characters'; 
    }else{ 
     echo 'Output: valid characters'; 
    } 

に注意してください:私はアラビア語、中国語、などのような他の言語から他の人文字を受け入れる必要があるので、それは私が許可されていないすべての文字を指定する必要があることを意味ので、私は条件の下に使用することはできません。

if (!preg_match('/[^A-Za-z0-9]/', $string)) 

あなたのお手伝いをお待ちしております。ありがとう。

+2

特殊文字が含まれていますが、 ''/[\ {^ $ $&*()} {@#〜?><>、| = _ +¬ - \ [\]]/'' – Thamilan

答えて

1

あなたは角括弧あなたの表現で[]を追加するのを忘れ。現在の式に\[\]を追加しました。

Try this code snippet here

<?php 

ini_set('display_errors', 1); 

$string = 'starw]ars'; 

if (preg_match('/[\[\]\'^£$%&*()}{@#~?><>,|=_+¬-]/', $string)) 
{ 
    echo 'Output: Contains Special Characters'; 
} else 
{ 
    echo 'Output: valid characters'; 
} 
+1

これはうまくいきました。ありがとう –

2

エスケープされた角括弧を式に追加する必要があります。

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

編集:@タミランへの謝罪、私はあなたのコメントを見ませんでした。

編集2:preg_quote機能を使用することもできます。

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

preg_quote機能は、あなたの特殊文字をエスケープします。

1

使用strpos:

$string = 'starw]ars'; 

if (strpos($string, ']') !== false) { 
    echo 'true'; 
} 

追加情報については、以下の回答をご覧ください。 How do I check if a string contains a specific word in PHP?

+0

'' 'を検索するためだけに良い答えがありますが、OPは"指定された文字列に特殊文字が含まれているかどうかを確認しようとしています。以下のコードは動作していますが、1文字は角括弧[]で除外されているようです。 " –

0

この例を試してみてください。

<?php 
$string = 'starw]]$%ars'; 
if (preg_match('/[\'\/~`\[email protected]#\$%\^&\*\(\)_\-\+=\{\}\[\]\|;:"\<\>,\.\?\\\]/', $string)) 
{ 
    echo 'Output: Contains Special Characters'; 
} else 
{ 
    echo 'Output: valid characters'; 
} 
?> 

出力:

出力:\ [\] ``バックスラッシュでエスケープそれらを追加

関連する問題