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

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.

So i look for a way to do that in javascript and in 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:

<?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!

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

In Javascript the concept is the same, but maybe you need a library for compression.

Please remember: This is no encryption only encoding! Do not use this for hiding information