Question

Je suis en train de compresser une chaîne donnée à une version plus courte, copier chaîne compressée pâte en mesure qui ne contient pas de sauts de ligne.

J'ai essayé gzcompress, mais copier / coller le résultat dans un autre script php et d'essayer de gzuncompress lance « Attention: gzuncompress (): erreur de données »

Y at-il fonction php natif qui compresse une chaîne, et le résultat est une chaîne sans sauts de ligne?

Merci.

Était-ce utile?

La solution

Vous pouvez essayer base64_encode / base64_decode. Si vous la compression binaire pour couper et coller, je vous suggère de base64 encodez en premier.

Autres conseils

vous pouvez échapper à vos sauts de ligne après la compression: course gzcompress () sur votre chaîne, remplacez les sauts de ligne avec un 2 caractères connu paire dans le résultat compressé. pour décompresser, remplacer la paire de caractères connus 2 par des sauts de ligne, puis exécuter gzuncompress () ...

En fait, vous devrez effectuer 2 remplacements. puisque je ne peux pas exprimer en anglais (pas ma langue maternelle), voici un exemple: utiliser « + n » pour échapper à des sauts de ligne. vous devez d'abord d'échapper à tous les « + » qui sont debout seul, car si elle est suivie d'un « n », il sera accidentellement remplacé par une ligne-break lorsque décompressé; nous allons choisi « ++ » pour échapper « +. puis remplacer les sauts de ligne par « + n ». lorsque la décompression, remplacer chaque « + n » pair, par une ligne de rupture, alors chaque « ++ » paire par « + ». c'est tout!

Il est impossible de concevoir un algorithme général de compression qui produit toujours sortie plus courte que l'entrée. Donc, si vous voulez toujours sortie court-circuitée que l'entrée, vous devez commencer à restreindre ce que votre algorithme peut faire. Vous devez penser à quels caractères sont acceptables dans l'entrée (long) chaîne, et quels sont les caractères acceptables dans votre chaîne de sortie (courte). Une fois que vous avez une bonne idée de ces derniers, vous pouvez commencer à travailler sur ce que sont vos options.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top