PHP функция для удаления вхождений определенных символов из строки - PullRequest
0 голосов
/ 24 февраля 2011

Мне нужна функция PHP, которая будет принимать строку как входную и возвращать строку минус все вхождения этих символов: ! * '(); : @ & = + $, /? % # []

Есть ли что-то уже построенное для этой цели или это можно сделать с помощью регулярных выражений? Я бы предпочел не делать 20 различных вызовов функций str_replace для этой строки. Спасибо!

Ответы [ 3 ]

1 голос
/ 24 февраля 2011
$quoted = preg_quote('!*\'();:@&=+$,/?%#[]','/');
$sanitized = preg_replace('/['.$quoted.']/', '', $string);

Если вы хотите заменить пунктуацию, используйте вместо этого класс регулярных выражений (он короче и удобочитаемее):

$sanitized = preg_replace('/[[:punct:]]/', '', $string);
1 голос
/ 24 февраля 2011

Вы можете использовать str_replace с массивами:

// $arrayOfCharsToReplace = array('!','*', ...etc

$clean = str_replace(
    $arrayOfCharsToReplace, 
    array_fill(0, count($arrayOfCharsToReplace), ''), // array of empty strings
    $unclean
);

Вы также можете использовать strtr примерно так:

// $arrayOfReplacements = array('!' => '', '*' => '', ...etc

$clean = strtr($unclean, $arrayOfReplacements);
0 голосов
/ 24 февраля 2011

Вы можете использовать strtr (это предпочтительно) или preg_replace (это медленнее).

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