2

我正在尝试在 PHP 中找到最好的方法:

我必须分析一个字符串。

某些字符是禁止使用的(即:逗号、半逗号、空格、百分比......但它可以是我想要的任何字符,而不仅仅是标点符号!)

我想在字符串中为每个禁止字符打印一行:

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

分析后,我想打印:

Character COMMA is forbidden
Character PERCENTAGE is forbidden

总和可能是对于具有相同字符的多个错误只有一行。

你们有些人遇到过这样的问题吗?

我试过 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 回答