Php 如何用另一个字符替换同一个字符的两个或多个出现的字符?
我正在尝试编写一段PHP代码,用该字符的一次出现替换字符串中多个相邻出现的字符 例如:Php 如何用另一个字符替换同一个字符的两个或多个出现的字符?,php,string,Php,String,我正在尝试编写一段PHP代码,用该字符的一次出现替换字符串中多个相邻出现的字符 例如: my-string--is---dashed 应成为: my-string-is-dashed 使用regexp: var_dump(preg_replace('/-{2,}/', '-', 'my-string--is---dashed')); // string(19) "my-string-is-dashed" 如果你指的是任何重复的字符,它就有点复杂了: var_dump(preg_replac
my-string--is---dashed
应成为:
my-string-is-dashed
使用regexp:
var_dump(preg_replace('/-{2,}/', '-', 'my-string--is---dashed')); // string(19) "my-string-is-dashed"
如果你指的是任何重复的字符,它就有点复杂了:
var_dump(preg_replace('/(.)(\\1)+/', '$1', 'tttooosssdihfjkkk')); string(9) "tosdihfjk"
其中\\1
基本上是匹配的字符(由(..
)匹配)。尝试以下操作:
$new_string = preg_replace('/-{2,}/', '-', $string);
最简单的解决方案是使用正则表达式替换
$output = preg_replace('/-+/', '-', $input);
实际上,为了限制真空替换,您可以选择以下选项:
$output = preg_replace('/-{2,}/', '-', $input);
它也有效。但这将替换为1行或多行,而不是2行或多行(即
{2,}
而不是+
)。为了澄清这一点,netcoder指的是我的代码的第一行(在编辑之前,我引入了第二行)。然而,据我所知,preg_replace
起作用的方式是,两者之间没有明显的性能差异,因为preg_replace
无论如何都会实例化一个新字符串,从源字符串或替换字符串中提取字符。
str_replace("--", "-", $mystring);