2013-05-31 40 views
1

我目前使用此代码来替换特殊字符,我想知道如果有一种方法只替换第一个和最后一个字符,并留下中间的那些结束。如何才刚刚开始,以取代特殊字符和

$name = preg_replace('/[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]/u', '', $name); 

感谢

+0

快速的解决方案,用于启动:'$名称= preg_replace函数( '/^[^ \ p {L} \ p {N} \ @ \ _ \ - \ \#\ $ \&]/U', '',$ name);''结束'$ name = preg_replace('/ [^ \ p {L} \ p {N} \ @ \ _ \ - \ \ \ \ \ $ \&] $/u' ,'',$ name);' – Twisted1919

+0

注意''[^ \ p {L} \ p {N}]'也会删除组合的重复字符;即*重音*字符与前一个字母组合以形成*重音*字母。 – arnaud576875

+0

@ Twisted1919,非常感谢,但它不起作用,当我使用名称A&S时,答复将是空字符串,我真正需要的是删除&如果它出现在名称的开头或结尾,但保留它如果它在中间,因为它不会影响代码,并给出错误 – GuestofHonor

回答

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()

+0

我真的需要帮助,如果有一种方法来启用一切,而不会导致回复错误,我有一个聊天机器人脚本,如果用户名是以标签或&或''开始,它会导致机器人回复空名称,有没有办法解决这个问题,无需更换任何东西?提前 – GuestofHonor

+0

' 感谢$ NAME = LTRIM($名,” &\'"');'我不知道的‘标签’的含义是什么? –

+0

我的意思是,我需要更换<>“”&如果它在开始或e名字,但如果有一种方法来显示他们而不造成错误,我将不胜感激。 – GuestofHonor

相关问题