preg_replace 不工作 - 没有任何变化

preg_replace is not working - nothing changes

我从我的一个 cms 验证中获得了下一个模式:

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

我有一个表单,我可以将其发送到 php 名字变量,该变量必须通过先前的验证。所以我制作 preg_replace 来清理字符串。 我做这个:

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

但没有任何变化。 可以帮忙吗?

https://regexr.com/56u94

您想用空字符串替换所有这些字符,因此删除。您必须使用稍微不同的正则表达式。

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

https://3v4l.org/RUk4Z

解释:用 ^ 表示字符串必须以其中一个字符开头。使用 $ 你说它必须以其中一个字符结尾。使用 * 表示该类型的 0 个或多个字符。

但是你想要的只是用一个空字符串替换每个匹配的字符,所以你不需要那些 ^, $ and * modifiers/limiters.