現在、このコードを使用して特殊文字を置き換えていますが、最初と最後の文字のみを置き換えて途中の文字を残す方法があるかどうか疑問に思っていました。
$name = preg_replace('/[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]/u', '', $name);
ありがとう
現在、このコードを使用して特殊文字を置き換えていますが、最初と最後の文字のみを置き換えて途中の文字を残す方法があるかどうか疑問に思っていました。
$name = preg_replace('/[^ \p{L}\p{N} \@ \_ \- \.\#\$\&]/u', '', $name);
ありがとう
これを使用$name = preg_replace(array('/^[\W|\d]+/','/[\W|\d]+$/'), '', $name);
すると、文字列の先頭と末尾からすべての非文字 (アクセント文字を含む) と数字が削除されます。数字を保持したい場合は、|\d
2回削除してください。
Unicode 正規表現を好む場合 ( http://www.regular-expressions.info/unicode.htmlも参照)、以下を試してください。$name = preg_replace(array('/^\P{L}+/u','/\P{L}+$/u'), '', $name);
「&-_」などの固定文字セットのみを置き換える必要がある場合は、 も使用できますtrim()
。