说我有
sometext-somemore - 试验--- TEST2
我怎么能让它取代所有超过1的实例 - 然后用1替换它们所以它看起来像这样
sometext-somemore测试-test2的
答案 0 :(得分:5)
使用preg_replace。
preg_replace('/-+/', '-', $mystr);
答案 1 :(得分:2)
使用正则表达式:s/-+/-/
+表示'前面一个或多个字符'。
答案 2 :(得分:1)
您可以使用正则表达式和preg_replace
函数执行此操作:
$str = 'sometext-somemore--test---test2';
echo preg_replace('/-+/', '-', $str);
会给你:
sometext-somemore-test-test2
我在这里使用的模式: -+
-
+
如果您对正则表达式感兴趣,请不要犹豫,阅读本手册的PCRE Patterns部分; - )
答案 3 :(得分:0)
for($ i = 0; $ i< strlen($ text) - 1; $ i ++){
if($ text [$ i] == $ text [$ i + 1]){
$ text = str_replace($ i。$ i,$ i,$ text);
}
} 击>
对于你认为可能重复的每个字符,单独使用str_replace()的效率要高得多,但它会起作用..
如果你想要的只是用一个替换两个破折号:
$text = str_replace("--", "-", $text);
答案 4 :(得分:0)
使用此:
echo preg_replace("/-+/","-","sometext-somemore--test---test2");
//prints sometext-somemore-test-test2