Удаление повторяющихся символов рядом друг с другом

im пытается удалить повторяющиеся символы, которые находятся непосредственно рядом друг с другом

1,2,3,4,5 - содержит несколько запятых, но их нельзя удалять 1, 2, 3, 4, 5 - пришлось бы превратить в обычный 1,2,3,4,5 независимо от того, сколько запятых находится между каждым числом, которое я хотел бы иметь только один. У меня есть нечто похожее, которое гарантирует, что в конце строки нет запятых:

$n = "1,2,3,4,5";
for ($i=0;$i< strlen($n);$i++) {

    if (substr($n, -1) == ',') {
        $n = substr($n, 0, -1);
    }
}

был бы признателен за помощь в этом вопросе,

Спасибо:)

Ответы

Ответ 1

Похоже, вы только хотите сделать это с помощью запятых, поэтому очень легко сделать с preg_replace:

$n = '1,2,,3,,,,,4,5';
$n = preg_replace('/,+/', ',', $n);     // $n == '1,2,3,4,5'

Также вы можете заменить код, который вы указали выше, чтобы убедиться, что в конце строки нет запятых с rtrim. Это будет быстрее и легче читать:

$n = '1,2,3,4,5,,,,,'
rtrim($n, ',');                         // $n == '1,2,3,4,5'

Вы можете объединить их в однострочный:

$n = preg_replace('/,+/', ',', rtrim($n, ','));

Ответ 2

$n = '1,2,,3,,,,,4,5';
$n = preg_replace('/(.)\\1+/', '$1', $n);

Это должно работать для любых повторяющихся символов, следующих сразу друг за другом.

Ответ 3

Используйте Str_replace.

$newstring = str_replace(',,', ',' , $String);

заменит все экземпляры в вашей строке.