eliminando caracteres duplicados uno al lado del otro

Estoy tratando de eliminar los caracteres duplicados que están directamente uno al lado del otro

1,2,3,4,5 – tiene algunas comas pero no se deben eliminar 1, 2, 3, 4, 5 – tendrían que convertirse en las 1,2,3,4 normales , 5 sin importar cuántas comas hay entre cada número me gustaría tener solo una. tengo algo similar que asegura que no haya comas al final de la cadena:

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

agradecería algo de ayuda en este asunto,

Gracias 🙂

Parece que solo quieres hacer esto con comas, por lo que es extremadamente fácil de hacer con preg_replace :

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

También puede reemplazar el código que proporcionó anteriormente que se asegura de que no haya comas al final de una cadena con rtrim . Será más rápido y fácil de leer:

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

Puede combinarlos en un solo liner:

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

Esto debería funcionar para cualquier personaje duplicado que se siga inmediatamente.