9 ответов:
Похоже, вы уже почти знали, что хотите сделать, вы в основном определили его как регулярное выражение.
preg_replace("/[^A-Za-z0-9 ]/", '', $string);
регулярные выражения ваш ответ.
$str = preg_replace('/[^a-z\d ]/i', '', $str);
- The
iозначает нечувствительный к регистру.^значит, не начала.\dсоответствует любой цифре.a-zсоответствует всем символам междуaиz. Из-заiпараметр, который не нужно указыватьa-zиA-Z.- после
\dесть пробел, поэтому пробелы разрешены в этом регулярное выражение.
вот очень простое регулярное выражение для этого:
\W|_и используется по мере необходимости (с
/разделитель Слэш).preg_replace("/\W|_/", '', $string);протестируйте его здесь с помощью этого замечательного инструмента, который объясняет, что делает регулярное выражение:
[\W_]+$string = preg_replace("/[\W_]+/u", '', $string);он выбирает все не A-Z, a-z, 0-9 и удаляет его.
Смотрите пример здесь:https://regexr.com/3h1rj
preg_replace("/\W+/", '', $string)вы можете проверить его здесь : http://regexr.com/
Я тоже искал ответ, и мое намерение состояло в том, чтобы очистить каждый не-альфа, и там не должно быть больше одного пространства.
Итак, я изменил ответ Алекса на это, и это работает для меняpreg_replace('/[^a-z|\s+]+/i', ' ', $name)
Регулярное выражение Выше оказалосьsy8ed sirajul7_islamtosy ed sirajul islam
Пояснение: регулярное выражение будет проверять НЕ ЛЮБОЙ от a до z в случае нечувствительный путь или более одного пробела, и он будет преобразован в один пробел.
Если вам нужно поддерживать другие языки, вместо типичного A-Z, вы можете использовать следующее:
preg_replace('/[^\p{L}\p{N} ]+/', '', $string);
[^\p{L}\p{N} ]определяет a отрицается (он будет соответствовать символу, который не определенный) класс символов:
\p{L}: письмо от любой язык.\p{N}: числовой символ в любой сценарий.: a space character.+взахлеб матчи класс персонажа между 1 и неограниченный раза.это позволит сохранить буквы и цифры из других языков и скриптов, а также A-Z:
preg_replace('/[^\p{L}\p{N} ]+/', '', 'hello-world'); // helloworld preg_replace('/[^\p{L}\p{N} ]+/', '', 'abc@~#123-+=öäå'); // abc123öäå preg_replace('/[^\p{L}\p{N} ]+/', '', '你好世界!@£$%^&*()'); // 你好世界
Примечание: это очень старый, но все еще актуальный вопрос. Я отвечаю исключительно для того, чтобы предоставить дополнительную информацию, которая может быть полезным для будущих посетителей.
Comments