Я пытаюсь найти фрагмент кода PHP, который заменяет несколько соседних вхождений символа в строке только одним вхождением этого символа.
Пример:
my-string--is---dashed
должно стать:
my-string-is-dashed
Самое простое решение - использовать регулярное выражение для замены.
$output = preg_replace('/-+/', '-', $input);
На самом деле, чтобы ограничить пустые замены, вы можете выбрать следующее:
$output = preg_replace('/-{2,}/', '-', $input);
с регулярным выражением:
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 - это в основном совпадающий символ (соответствует (.)).
\\1
(.)
Попробуйте это:
$new_string = preg_replace('/-{2,}/', '-', $string);
str_replace("--", "-", $mystring);