Pergunta

Eu estou tentando comprimir qualquer string dada para uma versão mais curta, copiar e colar-capazes corda comprimido que não contém qualquer quebra de linha.

Eu tentei gzcompress, mas, em seguida, copiar / colar o resultado em um script php diferente e tentando gzuncompress lança "Aviso: gzuncompress (): Erro de dados"

Existe alguma função php nativo que comprime uma corda, e o resultado é uma cadeia sem quebras de linha?

Graças.

Foi útil?

Solução

Você poderia tentar base64_encode / base64_decode. Se você está comprimindo a binário para cortar e colar, eu sugiro que você Base64 codificá-lo em primeiro lugar.

Outras dicas

você pode escapar suas quebras de linha depois de comprimir: gzcompress run () em sua corda, substituir quebras de linha com um conhecido par 2 caracteres no resultado comprimido. Para descompactar, substituir o conhecido 2 caracteres par de quebras de linha, em seguida, executar gzuncompress () ...

Na verdade, você vai precisar para realizar 2 substituições. Já que não posso expressar isso em Inglês (não a minha língua nativa), aqui está um exemplo: use '+ n' escapar quebras de linha. primeiro você precisará escapar cada '+', que está em pé sozinho, pois se ele é seguido por um 'n' será acidentalmente substituído por uma linha-break quando descompactação; vamos escolheu '++' para escapar '+. então substituir quebras de linha por '+ n'. quando descomprimir, substituir cada par '+ n' por uma quebra de linha, em seguida, cada '++' par por '+'. é isso!

É impossível projetar um algoritmo de compressão geral que sempre produz uma saída mais curta do que a entrada. Então, se você quiser sempre de saída em curto do que a entrada, você tem que começar a restringir o que seu algoritmo pode fazer. Você precisa pensar sobre quais personagens são aceitáveis ??na entrada (longo) da corda, e quais personagens são aceitáveis ??na sua saída (short) string. Uma vez que você tem uma boa idéia desses, você pode começar a trabalhar para fora o que são as suas opções.

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