如何使用 preg_replace() 去除字符串中多余的星号

Sam*_*mmy 4 php strip preg-replace

我知道如何使用 preg_replace() 去除多余的空格、破折号和句点,但我需要知道下面哪种格式对于去除字符串中的多余星号是正确的。

这些代码行用于去除多余的空格、破折号和句点:

// Strips out extra spaces
   $string = preg_replace('/\s\s+/', ' ',$string);
// Strips out extra dashes
   $string = preg_replace('/-+/', '-', $string);
// Strips out extra periods
   $string = preg_replace('/\.+/', '.', $string);
Run Code Online (Sandbox Code Playgroud)

以下哪项对于去除多余的星号是正确的?

// Version 1: Strips out extra asterisks
   $string = preg_replace('/\*+/', '*', $string);

// Version 2: Strips out extra asterisks
   $string = preg_replace('/*+/', '*', $string);
Run Code Online (Sandbox Code Playgroud)

先感谢您。

顺便说一句,是否有一个列表显示了在使用 PHP 时需要用正斜杠转义的所有字符?

c.h*_*ill 5

尝试这个:

$string = preg_replace('/\*{2,}/', '*', $string);
Run Code Online (Sandbox Code Playgroud)

这将用一个星号替换相邻的多个星号的任何实例。

或者,如果您只想去掉所有星号:

$string = preg_replace('/[\*]+/', '', $string);
Run Code Online (Sandbox Code Playgroud)

值得注意的是,*是正则表达式中的一个特殊字符;所以,你必须用反斜杠来逃避它。

另外,这里有一个很好的正则表达式参考:http : //www.regular-expressions.info/reference.html

以下是将多个字符替换组合成一个正则表达式的方法:

$string = preg_replace('/(\*|\.){2,}/', '$1', $string);
Run Code Online (Sandbox Code Playgroud)

这将替换星号和句点。