【发布时间】:2013-05-31 19:43:33
【问题描述】:
我目前正在使用这段代码来替换特殊字符,我想知道是否有办法只替换第一个和最后一个字符并将它们留在中间。
$name = preg_replace('/[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]/u', '', $name);
谢谢
【问题讨论】:
-
快速解决方案,开始:
$name = preg_replace('/^[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]/u', '', $name);结束$name = preg_replace('/[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]$/u', '', $name); -
请注意,
[^\p{L}\p{N}]也会删除组合的变音符号;即 accent 字符与前一个字母组合形成 accented 字母。 -
@Twisted1919,非常感谢,但它不起作用,当我使用名称 A&S 时,回复将是空字符串,我真正需要的是删除 & 如果它出现在开头名称或在最后,但如果它在中间,则保留它,因为它不会影响代码并给出错误
-
@arnaud576875,我真的很抱歉,因为我不是 PHP 方面的专家,所以我真的不知道你说什么:)
标签: php preg-replace