PHP正则表达式,替换所有垃圾符号

Swa*_*der 1 php regex string

对于这样做,我无法理解一个可靠的RegEx,在这个RegEx魔术中仍然是非常新的.我取得了一些有限的成功,但我觉得有一种更简单,更有效的方式.

我想净化一串所有非字母数字字符,并将所有这些无效子集转换为单个下划线,但在边缘处修剪它们.例如,字符串<<+?This?//String_..!应转换为This_String

有关在一个RegEx中完成此操作的任何想法吗?我用普通的str_replace做了它,然后将多次下划线重新排列,然后从边缘修剪掉最后一个下划线,但它看起来有点矫枉过正,就像RegEx一次可以做的那样.这里有最大的速度/效率,即使它是我正在处理的毫秒.

mar*_*rio 6

= trim(preg_replace('<\W+>', "_", $string), "_");
Run Code Online (Sandbox Code Playgroud)

\W这里的大写转义符合"非单词"字符,表示除字母和数字之外的所有字符.要删除剩余的外部下划线,我仍然会使用trim.