preg_replace не работает - ничего не меняется - PullRequest
0 голосов
/ 18 июня 2020

Я получил следующий шаблон в результате одной из проверок cms:

'/^[^0-9!<>,;?=+()@#"°{}_$%:¤|]*$/u'

И у меня есть форма, в которой я отправляю переменную php firstname, которая должна пройти предыдущую проверку. Поэтому я делаю preg_replace, чтобы очистить строку. Делаю:

preg_replace('/^[0-9!<>,;?=+()@#"°{}_$%:¤|]*$/u', '', $firstname);

Но ничего не меняется. Помогите пожалуйста?

https://regexr.com/56u94

1 Ответ

1 голос
/ 18 июня 2020

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

preg_replace('/[0-9!<>,;?=+()@#"°{}_$%:¤|]/u', '', "foobar_123123_&90481");

https://3v4l.org/RUk4Z

Объяснение: с ^ вы говорите, что строка должна начинаться с одного из этих символов . С $ вы говорите, что он должен заканчиваться одним из этих символов. С помощью * вы говорите 0 или более символов этого типа.

Но все, что вам нужно, это заменить каждый символ, который соответствует пустой строке, поэтому вам не нужны эти ^, $ and * модификаторы / ограничители.

...