我目前正在使用此代码替换特殊字符,我想知道是否有办法只替换第一个和最后一个字符并将其保留在中间。
$name = preg_replace('/[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]/u', '', $name);
由于
答案 0 :(得分:0)
使用$name = preg_replace(array('/^[\W|\d]+/','/[\W|\d]+$/'), '', $name);
这将删除字符串开头和结尾的所有非字母字符(包括重音字符)和数字。如果您想保留数字,请删除|\d
两次。
如果您更喜欢Unicode正则表达式(另请阅读:http://www.regular-expressions.info/unicode.html)
尝试:$name = preg_replace(array('/^\P{L}+/u','/\P{L}+$/u'), '', $name);
如果你只需要替换一组固定的字符,比如'& -_'你也可以使用trim()
。