Frage

Ich versuche, jede beliebige Zeichenfolge auf eine kürzere Version zu komprimieren, kopieren und einfügen-able komprimierte Zeichenfolge, die keine Zeilenumbrüche enthalten.

Ich habe versucht gzcompress, aber dann Kopieren / Einfügen das Ergebnis in eine andere PHP-Skript und versuchen, wirft gzuncompress „Warnung: gzuncompress (): Datenfehler“

Gibt es eine nativen PHP-Funktion, die einen String komprimiert, und das Ergebnis ist eine Zeichenkette ohne Zeilenumbrüche?

Danke.

War es hilfreich?

Lösung

Sie könnten versuchen, base64_encode / base64_decode. Wenn Sie Ausschneiden und Einfügen in binäre sind komprimiert, würde ich vorschlagen, dass Sie es zuerst kodieren Base64.

Andere Tipps

Lauf gzcompress () auf die Zeichenfolge, ersetzen Zeilenumbrüche mit einem bekannten 2-Zeichen Paar im komprimierten Ergebnis:

Sie können Ihre Zeilenumbrüche nach Komprimierung entkommen. zu dekomprimieren, ersetzen Sie das bekannte 2-Zeichen Paar von Zeilenumbrüchen, dann läuft zu () ...

tatsächlich, müssen Sie zwei Ersatz auszuführen. da ich dies in Englisch nicht ausdrücken kann (nicht meine Muttersprache), hier ein Beispiel: Verwenden Sie ‚+ n‘ Zeilenumbrüche zu entkommen. Sie werden zuerst alle ‚+‘ entkommen müssen, die allein stehen, denn wenn sie von einem ‚n‘ gefolgt ist, wird es aus Versehen durch einen Zeilenumbruch ersetzt werden, wenn dekomprimieren; Lassen Sie uns gewählt haben ‚++‘ für die Flucht ‚+. Zeilenumbrüche ersetzen dann durch ‚+ n‘. wenn Dekomprimieren Ersetzen jedes ‚+ n‘ Paar durch einen Zeilenumbruch, dann all ‚++‘ Paar von ‚+‘. das ist es!

Es ist unmöglich, einen allgemeinen Komprimierungsalgorithmus zu entwickeln, die immer ausgegeben kürzer als die Eingabe erzeugt. Also, wenn Sie immer kurzgeschlossenen Ausgang als Eingang wollen, müssen Sie anfangen zu beschränken, was Ihr Algorithmus tun. Sie müssen darüber nachdenken, welche Zeichen in der Eingabe (long) string akzeptabel sind, und die Zeichen sind akzeptabel in der Ausgabe (kurz) Zeichenfolge. Sobald Sie eine gute Idee davon haben, können Sie anfangen zu arbeiten heraus, was Ihre Optionen sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top