Pergunta

Estou desenvolvendo um único servindo site em PHP que simplesmente mensagens exibe que são postados por visitantes (o ideal é em torno do tema do website). Qualquer um pode postar até três mensagens por hora.

Uma vez que o site será apenas uma página, eu gostaria de controlar o comprimento vertical de cada mensagem. No entanto, eu quero pelo menos parcialmente preservar quebras de linha na mensagem original. Um compromisso seria para permitir duas quebras de linha, mas se houver mais de dois, em seguida, substituí-los com um total de duas quebras de linha em uma fileira. implementos Stack Overflow isso.

Por exemplo:

"Porcupines \ nare \ n \ n \ n \ nporcupiney."

seria alterado para

"Porcupines
é

porcupiney."

Um aspecto complicado de verificação de quebras de linha é a possibilidade de serem coletados e armazenados como \ r \ n, \ r ou \ n. Eu pensei sobre a conversão de todas as quebras de linha para
s usando nl2br (), mas que parecia desnecessário.

A minha pergunta: Usando expressões regulares em PHP (com funções como preg_match () e preg_replace ()), como posso verificar se há casos de mais de duas quebras de linha em uma linha (com ou sem espaço em branco entre eles) e, em seguida, mudá-los para um total de duas quebras de linha?

Foi útil?

Solução

preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)

Outras dicas

Algo como

preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);

deve funcionar, eu acho. Embora eu não me lembro o PHP sintaxe de forma exata, ele pode precisar de um pouco mais escapar: - /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top