Как заменить спецсимволы только в начале и в конце

В настоящее время я использую этот код для замены специальных символов, и мне было интересно, есть ли способ заменить только первый и последний символы и оставить их посередине.

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

Другие вопросы по тегам