PHP preg_replace заменяет числа вместе со специальными символами - PullRequest
2 голосов
/ 21 марта 2012

У меня есть следующий PHP-код для удаления специальных символов из переменной;

<?php
$name = "my%^$@#name8";
$patterns = array( '/\s+/' => '_', '/&/' => 'and', '/[^[:alpha:]]+/' => '_');
$name2 = preg_replace(array_keys($patterns), array_values($patterns), trim($name));
echo $name2;
?>

Но, наряду со специальными символами, числа также заменяются подчеркиваниями _.Я хочу включить числа в результат.Как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

Ваш третий шаблон, /[^[:alpha:]]+/ заменяет все, что не является буквой, подчеркиванием.Поэтому добавьте к нему числа, например /[^[:alpha:]0-9]+/

2 голосов
/ 21 марта 2012

Заменить '/[^[:alpha:]]+/' на '/[^[:alpha:][:digit:]]+/'.Оригинал заменяет все, что не является буквенным символом.Добавление [: digit:] означает, что оно заменит все, что не является буквой или цифрой, поэтому ваши цифры также будут сохранены.

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