Как удалить не буквенно-цифровые символы?



Мне нужно удалить все символы из строки, которых нет в a-z A-Z 0-9 установить или не пространства.



есть ли у кого-нибудь функция для этого?

487   9  

9 ответов:

Похоже, вы уже почти знали, что хотите сделать, вы в основном определили его как регулярное выражение.

preg_replace("/[^A-Za-z0-9 ]/", '', $string);

для символов Юникода это:

preg_replace("/[^[:alnum:][:space:]]/u", '', $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);

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

http://www.regexr.com/

[\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_islam to sy 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} ]+/', '', '你好世界!@£$%^&*()'); // 你好世界

Примечание: это очень старый, но все еще актуальный вопрос. Я отвечаю исключительно для того, чтобы предоставить дополнительную информацию, которая может быть полезным для будущих посетителей.

Я использую этот:

//to remove non english character
$str = preg_replace('/[^-5]+/u', '', $str);

Comments

    Ничего не найдено.