2

PHPでこれを行うための最良の方法を見つけようとしています:

文字列を分析する必要があります。

一部の文字は禁止されています (つまり、コンマ、セミコンマ、スペース、パーセンテージなどですが、句読点だけでなく、任意の文字を使用できます!)

文字列内の FOR EACH 禁止文字の行を出力したいと思います:

$string = "My taylor, is rich%";

分析後、印刷したい:

Character COMMA is forbidden
Character PERCENTAGE is forbidden

合計は、同じ文字の複数のエラーに対して 1 行のみになる場合があります。

あなたの何人かはそのような問題を経験しましたか?

REGEX と STRPOS を試しましたが、大きな結果は得られませんでした。

4

1 に答える 1

4

preg_match_allを使用します。

$forbidden = "/[,;%]/";
$string = "My taylor, is rich%; he is breaking my bank, natch";
$matches = null;
preg_match_all($forbidden, $string, $matches);
$chars = $matches ? array_unique($matches[0]) : array();

foreach ($chars as $char) {
    echo "Character {$char} is forbidden\n";
}

上記の出力は次のとおりです。

Character , is forbidden
Character % is forbidden
Character ; is forbidden

は正規表現のすべてのpreg_match_allインスタンスを返します。$forbidden適切と思われるように、その正規表現の文字を調整できます。はarray_unique重複を排除します。

最後に、文字自体を出力に出力しています。「COMMA」、「PERCENTAGE」などの単語が必要な場合は、そのハッシュを作成する必要があります。

于 2011-09-12T17:12:18.497 に答える