Как заменить спецсимволы только в начале и в конце
В настоящее время я использую этот код для замены специальных символов, и мне было интересно, есть ли способ заменить только первый и последний символы и оставить их посередине.
$name = preg_replace('/[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]/u', '', $name);
Спасибо
1 ответ
Использование $name = preg_replace(array('/^[\W|\d]+/','/[\W|\d]+$/'), '', $name);
это приведет к удалению всех небуквенных символов (включая символы ударения) и цифр в начале и конце вашей строки. Если вы хотите сохранить цифры, удалите |\d
дважды.
Если вы предпочитаете регулярные выражения Юникода (читайте также: http://www.regular-expressions.info/unicode.html), попробуйте: $name = preg_replace(array('/^\P{L}+/u','/\P{L}+$/u'), '', $name);
Если вам нужно заменить только фиксированный набор символов, таких как "&-_", вы также можете использовать trim()
,