我只允许在字符串中使用alpha-numeric
,_
和-
值并删除所有其他字符。它的工作正常,但当字符串大小为1个字符(无关紧要alphabet
或numeric
或_
或-
)时,我得到空值而不是单个包机。
这是示例代码
$str = 1;
$str = preg_replace('/^[a-zA-Z0-9_-]$/', '', $str);
var_dump($str);
要么
$str = 'a';
$str = preg_replace('/^[a-zA-Z0-9_-]$/', '', $str);
var_dump($str);
我已经测试了PHP的这个多个版本
您将删除字符串内任何位置除ASCII字母,数字,_
和-
之外的任何字符。您需要删除锚点并将正面角色类转换为否定角色:
$str = preg_replace('/[^\w-]+/', '', $str);
细节
[^
- negated character class的开始
\w
- 一个字char:字母,数字或_
-
- 连字符]
- 角色类的结尾+
- 量词:重复1次或更多次。