문제

주어진 문자열을 짧은 버전으로 압축하려고합니다. 라인 브레이크가 포함되지 않은 페이스트 가능 압축 문자열을 복사합니다.

GZCompress를 시도했지만 결과를 다른 PHP 스크립트로 복사/붙여 넣고 Gzuncompress를 던지려고 시도합니다. "경고 : gzuncompress () : 데이터 오류".

문자열을 압축하는 기본 PHP 함수가 있습니까? 결과가 줄이 나지 않는 문자열이 있습니까?

감사.

도움이 되었습니까?

해결책

base64_encode / base64_decode를 시도 할 수 있습니다. 절단 및 붙여 넣기를 위해 바이너리로 압축하는 경우 Base64를 먼저 인코딩하는 것이 좋습니다.

다른 팁

압축 후 라인 브레이크를 피할 수 있습니다 : 문자열에서 gzcompress ()를 실행하고 압축 결과에서 라인 브레이크를 알려진 2 자 쌍으로 바꾸십시오. 압축을 풀려면 알려진 2 자 쌍을 라인 브레이크로 바꾸고 gzuncompress ()를 실행하십시오.

실제로 2 개의 교체를 수행해야합니다. 이것을 영어 (모국어가 아님)로 표현할 수 없으므로 다음은 예입니다. '+n'을 사용하여 선을 벗어나십시오. 먼저 혼자 서있는 모든 '+'를 피해야합니다. 'n'이 뒤 따르는 경우 실수로 압축 할 때 라인 브레이크로 대체되기 때문입니다. '+를 탈출하기 위해'++ '를 선택합시다. 그런 다음 라인 브레이크를 '+n'으로 바꿉니다. 압박을받지 않으면 모든 '+n'쌍을 라인 브레이크로 교체 한 다음 모든 '++'쌍을 '+'로 교체하십시오. 그게 다야!

입력보다 항상 출력을 생성하는 일반적인 압축 알고리즘을 설계하는 것은 불가능합니다. 따라서 입력보다 항상 단락 된 출력을 원한다면 알고리즘이 수행 할 수있는 일을 제한해야합니다. 입력 (Long) 문자열에서 허용되는 문자와 출력 (짧은) 문자열에서 어떤 문자가 허용되는지 생각해야합니다. 이에 대한 좋은 아이디어가 있으면 옵션이 무엇인지 알아 내기 시작할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top