La compressione di una stringa, risultato finale, senza interruzioni di linea?
-
12-09-2019 - |
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.
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.