这应该很明显,但我遇到了麻烦。
我想用一个空字符串替换几个字符(短划线、空格、下划线),但我有问题。
此代码:$tmp = preg_replace('/[ -_]/', '', 'filename-1055');
返回此:"filename"
当我期待这个:"filename1055"
为什么要截断?
改为尝试str_replace
:
$tmp = str_replace(array("-", "_", " "), "", 'filename-1055');
除非有特殊原因,否则您将使用preg_replace
。
在字符类中,短划线-
是范围运算符,因此类[ -_]
表示(空格)到
[- _]
范围内的任何字符。
你有两种可能性:
1-将破折号移动到字符类的第一个或最后一个位置:[ _-]
或[ '-_]
2-或退出:-
试试这种方法,DEMO
$re = "/([-''s_])/";
$str = "filename-1055'n";
$subst = "";
$result = preg_replace($re, $subst, $str, 1);
这是因为您没有用CCD_15转义[]
('-
中的范围运算符)。正确的代码是:
$tmp = preg_replace('/[ '-_]/', '', 'filename-1055');