简体   繁体   English

Javascript&PHP:如何在编码的短字符串中编码普通字符串?

[英]Javascript & php : How to encode a normal string in a encoded short string?

I have a normal string : 我有一个普通的字符串:

var string = "Hello i'm fine"

I want to encode it in a short encoded string. 我想将其编码为较短的编码字符串。

And i want to retrieve the original long string by decoding the short string. 我想通过解码短字符串来检索原始的长字符串。

Base64 don't suit me because the base64 output length is larger than the original string length. Base64不适合我,因为base64输出长度大于原始字符串的长度。

So i look for a way to do that in javascript and in php. 所以我在javascript和php中寻找一种方法来做到这一点。

An idea ? 一个主意 ?

For your example it's not so easy to short the string (see below). 对于您的示例,短字符串并不是那么容易(请参见下文)。 But if your input is a longer string, you can use a compress function in combination with base64 encoding: 但是,如果您输入的是更长的字符串,则可以结合使用compress函数和base64编码:

<?php
$input = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt.";

$encoded = base64_encode(gzdeflate($input));
$decoded = gzinflate(base64_decode($encoded));
var_dump($encoded);
var_dump($decoded);

The input has 489 characters, the encoded just 372! 输入有489个字符,编码只有372个!

string(372) "PVHZTcQwEG1lCojSA4IfJEQPxh7CIF87x9bPc7LLhyUf7xx/DOVGMi0alVGHkolTauwb5dGNs7MHK6UiUyxLP4ir+E4v3Dl1gFobZVCVI2oiPtgvoX9ES2Zpp1c42MgiRj35uAXTZOzkK4xAaunoeCtYM6mHCnfcju5sGyiWEURJpUiOCk4L2+ltdM50i9ToG7mAjOoqWRg2nDd41MpLYxly4ELZBVlusdDGbafPqIh+1oWSX4lPAHGX9nSZXJh+w3xs9K2YhCzanetGqQr0/bK8R53hyfmcBh41x07v/RR7CujP6BktAgBpk7UI+AlsTG2Nxegunni7CI+Q+CTJHo+y6HOFaqOu46Pa8nJYK7n0LCU6vusP"
string(489) "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt."

For shorter strings it is maybe possible by choosing character sets smartly. 对于较短的字符串,可以通过明智地选择字符集来实现。 A short input character set and a large output character set can reduce the length of a string. 较短的输入字符集和较大的输出字符集可以减少字符串的长度。 Read this: Shortest possible encoded string with decode possibility (shorten url) using only PHP 阅读此内容: 仅使用PHP并可能解码的最短编码字符串(缩短url)

In Javascript the concept is the same, but maybe you need a library for compression. 在Javascript中,概念是相同的,但也许您需要一个用于压缩的库。

Please remember: This is no encryption only encoding! 请记住:这不是仅加密的编码! Do not use this for hiding information 不要用它来隐藏信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM