首页 > 解决方案 > 使用 PHP 删除除 alt 代码之外的特殊字符

问题描述

我正在删除字符串中的特殊字符,但是当我尝试运行代码时,它会删除最后一个数字,例如从hello11​​3hello11​​ 等。然后我发现这些数字在alt 代码中用于特殊字符。

这就是我想要做的

$var = "hello113 guys115 this is for test&ing101!";
preg_match_all('/([a-zA-Z])+\w{2}/i', preg_replace('/[^A-Za-z0-9\-\']/', '', $var), $var_data);

echo strtolower(implode(" ", $var_data[0]));

然后结果是这样的

hello11 guys11 this for test ing10

我期待这样的结果:

hello113 guys115 this is for testing101

标签: phpregex

解决方案


只需删除所有非空格和非单词字符。

$var = "hello113 guys115 this is for test&ing101!";
echo preg_replace('/[^\w\s]|_/', '', $var);

结果:

你好 113 伙计们 115 这是用于测试的 101

https://3v4l.org/jeebk

|_是因为\w允许下划线。

u如果还允许使用 unicode 单词字符,您可以在结束分隔符之后添加修饰符。

preg_replace('/[^\w\s]|_/u', '', $var)

推荐阅读