ضغط سلسلة، والنتيجة النهائية دون فترات الراحة؟

StackOverflow https://stackoverflow.com/questions/1662610

  •  12-09-2019
  •  | 
  •  

سؤال

أحاول ضغط أي سلسلة معينة إلى إصدار أقصر، انسخ السلسلة المضغوطة المعجونة التي لا تحتوي على أي فواصل سطر.

حاولت GZCompress، ولكن بعد ذلك نسخ / لصق النتيجة في برنامج نصي PHP مختلف ومحاولة Gzuncompress رميات "تحذير: Gzuncompress (): خطأ في البيانات"

هل هناك أي وظيفة PHP الأصلية تضغط على سلسلة، والنتيجة هي سلسلة دون أي فواصل سطر؟

شكرا.

هل كانت مفيدة؟

المحلول

يمكنك تجربة Base64_Encode / Base64_Decode. إذا كنت تعاني من ضغط ثنائي للمقطع والصق، أود أن أقترح عليك Base64 تشفيرها أولا.

نصائح أخرى

يمكنك الهروب من فترات الراحة الخاصة بك بعد الضغط: تشغيل GZCompress () على السلسلة الخاصة بك، واستبدال استراحات السطر مع زوج حرفي معروف في النتيجة المضغوطة. لإلغاء ضغط، استبدل زوج الأحرف المعروفة من فواصل الأسطر، ثم قم بتشغيل Gzuncompress () ...

في الواقع، سوف تحتاج إلى أداء بدائل 2. نظرا لأنني لا أستطيع التعبير عن هذا باللغة الإنجليزية (وليس لغتي الأم)، فهناك مثال على ذلك: استخدم "+ N" للهروب من استراحات خط. ستحتاج أولا إلى الهروب من كل "+" والتي تقف وحدها، نظرا لأنه إذا كان يتبعه "n"، فسيتم استبداله بطريق الخطأ بخرصة خط غير مضغوط؛ دعنا نختار "++" للهروب من '+. ثم استبدال خط الراحة عن طريق "+ n". عند ضغط غير مضغوط، استبدل زوج "+ N" عن طريق استراحة خط، ثم زوج "++" بواسطة "+". هذا هو !

من المستحيل تصميم خوارزمية ضغط عامة تنتج دائما الإخراج أقصر من المدخلات. لذلك، إذا كنت ترغب دائما في الإخراج المختصر من المدخلات، عليك أن تبدأ في تقييد ما يمكن أن تفعل خوارزميةك. تحتاج إلى التفكير في أي شخصيات مقبولة في سلسلة الإدخال (طويلة)، والأحرف التي تكون مقبولة في سلسلة الإخراج (القصير). بمجرد أن تكون لديك فكرة جيدة عن هذه، يمكنك البدء في تشغيل ما هي خياراتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top