Domanda

Sto cercando di comprimere qualsiasi stringa data a una versione più corta, copiare stringa compressa pasta-grado che non contiene alcun interruzioni di riga.

ho provato gzcompress, ma poi copiare / incollare il risultato in uno script php diverso e cercando di gzuncompress getta "Attenzione: gzuncompress (): errore di dati"

C'è qualche funzione PHP nativa che comprime una stringa, e il risultato è una stringa senza interruzioni di riga?

Grazie.

È stato utile?

Soluzione

Si potrebbe provare base64_encode / base64_decode. Se si sta comprimendo al binario per taglia e incolla, vorrei suggerire di Base64 codificarlo prima.

Altri suggerimenti

si può sfuggire la vostra linea-break dopo la compressione: gzcompress run () sulla stringa, sostituire interruzioni di linea con una nota coppia di 2 caratteri nel risultato compressa. per decomprimere, sostituire il 2 caratteri noto coppia da interruzioni di linea, quindi eseguire gzuncompress () ...

in realtà, è necessario eseguire 2 sostituzioni. Poiché non posso esprimere questo in inglese (non la mia lingua madre), ecco un esempio: usare '+ n' per sfuggire interruzioni di linea. è necessario prima di fuggire ogni '+' che sono in piedi da solo, in quanto se è seguita da una 'n' sarà accidentalmente sostituito da una linea-break quando decompressione; diamo scelto '++' per sfuggire '+. quindi sostituire interruzioni di linea da '+ n'. quando decompressione, sostituire ogni '+ n' accoppiamento da una linea-break, allora ogni '++' accoppiamento da '+'. il gioco è fatto!

E 'impossibile progettare un algoritmo di compressione generale che produce sempre uscita più corto del input. Quindi, se si vuole sempre di uscita in corto di ingresso, è necessario iniziare a limitare ciò che il vostro algoritmo può fare. È necessario pensare a quali caratteri sono accettabili nel (lungo) stringa di input, e che i personaggi sono accettabili in vostra uscita (breve) stringa. Una volta che hai una buona idea di questi, si può iniziare a lavorare fuori che cosa sono le opzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top