如何使用preg_replace()删除字符串中的额外星号

时间:2012-05-17 20:39:20

标签: php preg-replace strip

我知道如何使用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);

以下哪项对于删除额外的星号是正确的?

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

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

提前谢谢。

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

1 个答案:

答案 0 :(得分:4)

试试这个:

$string = preg_replace('/\*{2,}/', '*', $string);

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

或者,如果你想摆脱所有的星号:

$string = preg_replace('/[\*]+/', '', $string);

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

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

以下是如何将多个字符替换合并为一个正则表达式:

$string = preg_replace('/(\*|\.){2,}/', '$1', $string);

这将取代星号和句号。