podés hacerlo :
1.- con expresiones regulares
creo que algo como
Código PHP:
ereg_replace("(\r\n){3,}", "\r\n\r\n", $cadena)
debería funcionar. (no lo garantizo dada mi nula experiencia con expresiones regulares)
2.- Haciéndolo recursivamente
mientras(encuentre más de 3 \r\n juntos) entonces
sustituir los 3 por 2
Si en algún caso encontrás 5, por ejemplo, en la primera pasada del bucle te quedan en 4 (sustituyo los 3 encontrados primero por 2), en la segunda 3, y en la tercera pasada te quedan 2. Obviamente las expresiones regulares son más eficientes.
Saludos.