Определите и покажите, какие запрещенные символы находятся в строке - PullRequest
2 голосов
/ 12 сентября 2011

Я пытаюсь найти лучший способ сделать это в PHP:

Мне нужно проанализировать строку.

Некоторые символы запрещены (например, запятая, точка с запятой, пробел,в процентах ... но это может быть любой символ, который я хочу, а не только знаки пунктуации!)

Я хотел бы напечатать строку ЗА КАЖДЫЙ запрещенный символ в строке:

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

Послепроанализируйте, я хочу напечатать:

Character COMMA is forbidden
Character PERCENTAGE is forbidden

Сумма может состоять в том, чтобы иметь только одну строку для нескольких ошибок с одним и тем же символом.

У некоторых из вас возникла такая проблема?

Я пробовал REGEX и STRPOS, но без существенного результата.

1 Ответ

4 голосов
/ 12 сентября 2011

Использовать 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» и т. Д., Вам придется создать для этого хеш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...