Php 如何修剪字符串中的特殊字符?
我想删除字符串左侧和右侧的所有非字母数字符号,保留字符串中间的符号 我问过类似的问题,好的解决办法是:Php 如何修剪字符串中的特殊字符?,php,regex,Php,Regex,我想删除字符串左侧和右侧的所有非字母数字符号,保留字符串中间的符号 我问过类似的问题,好的解决办法是: $str = preg_replace('/^\W*(.*\w)\W*$/', '$1', $str); 但它确实也删除了一些符号,如ąĄćĆęĘ等,并且不应将其作为仍按字母顺序排列的符号 上面的例子可以: ~~AAA~~ => AAA (OK) ~~AA*AA~~ => AA*AA (OK) ~~ŚAAÓ~~ => AA (BAD) 您可以传入一个有效字符列表,并告
$str = preg_replace('/^\W*(.*\w)\W*$/', '$1', $str);
但它确实也删除了一些符号,如ąĄćĆęĘ等,并且不应将其作为仍按字母顺序排列的符号
上面的例子可以:
~~AAA~~ => AAA (OK)
~~AA*AA~~ => AA*AA (OK)
~~ŚAAÓ~~ => AA (BAD)
您可以传入一个有效字符列表,并告诉函数替换该列表之外的任何字符:
$str=preg_replace('/[^a-zA-Z0-9*]+/',''$str)代码>
方括号表示选择此范围内的所有内容。克拉(^
)是not的正则表达式。然后列出有效字符(小写a到z,大写a到z,数字从0到9,以及星号)。方括号末端的加号表示选择0个或更多字符
编辑:
如果这是要保留的所有字符的列表,则:
$str=pregØu replace(“/”、“$str”)代码>确保在使用正则表达式时使用unicode的u
标志
以下内容适用于您的输入:
$str = preg_replace('/^\W*(.*\w)\W*$/u', '$1', '~~ŚAAÓ~~' );
// str = ŚAAÓ
但这不起作用:(不要使用它)
当你说非字母数字时,你的意思是除了A-Za-z0-9之外没有别的
$str = preg_replace('/^\W*(.*\w)\W*$/', '$1', '~~ŚAAÓ~~' );