2017-11-08 21 views
0

Google Adwords IDを私のアフィリエイトリンクのsubidとして追加したいと思います。問題は私のアフィリエイトプログラムがそのような長いsubIDを許可しないことです。それを短くする方法はありますか?例えば文字列を短くするにはどうすればいいですか?

私はこのようになりますGoogleからのIDを取得する:

jdfJHGsds57JHJsdkjjkskdfj324GFGHJ3334GHJ 

だから私のリンクは次のようになります。

www.mysite.com/?affofferid=jdfJHGsds57JHJsdkjjkskdfj324GFGHJ3334GHJ 

私は、符号化によって、GoogleのIDを短くしたいですかその他の方法。これどうやってするの?

IDを後で元に戻すことができます。

+1

https://softwareengineering.stackexchange.com/questions/119181/what-type-of-encoding-can-i-use-to-make-a-string-shorter – Harshakj89

+1

文字列を2つの変数に分割して追加します2つの異なるURLのparamersとしてURLに。後でそれらを単一の文字列に追加します。 – Gunaseelan

答えて

0

は、この記事を見てみましょう:Shortest possible encoded string with decode possibility (shorten url) using only PHP

彼は30文字 1に39文字列をエンコードし、再びそれを復号することができます。ここで

エンコーディング機能である:

function compress($input, $ascii_offset = 38){ 
    $input = strtoupper($input); 
    $output = ''; 
    //We can try for a 4:3 (8:6) compression (roughly), 24 bits for 4 chars 
    foreach(str_split($input, 4) as $chunk) { 
     $chunk = str_pad($chunk, 4, '='); 
     $int_24 = 0; 
     for($i=0; $i<4; $i++){ 
      //Shift the output to the left 6 bits 
      $int_24 <<= 6; 
      //Add the next 6 bits 
      //Discard the leading ascii chars, i.e make 
      $int_24 |= (ord($chunk[$i]) - $ascii_offset) & 0b111111; 
     } 
     //Here we take the 4 sets of 6 apart in 3 sets of 8 
     for($i=0; $i<3; $i++) { 
      $output = pack('C', $int_24) . $output; 
      $int_24 >>= 8; 
     } 
    } 
    return $output; 
} 

そしてデコード機能:

function decompress($input, $ascii_offset = 38) { 
    $output = ''; 
    foreach(str_split($input, 3) as $chunk) { 
     //Reassemble the 24 bit ints from 3 bytes 
     $int_24 = 0; 
     foreach(unpack('C*', $chunk) as $char) { 
      $int_24 <<= 8; 
      $int_24 |= $char & 0b11111111; 
     } 
     //Expand the 24 bits to 4 sets of 6, and take their character values 
     for($i = 0; $i < 4; $i++) { 
      $output = chr($ascii_offset + ($int_24 & 0b111111)) . $output; 
      $int_24 >>= 6; 
     } 
    } 
    //Make lowercase again and trim off the padding. 
    return strtolower(rtrim($output, '=')); 
} 

彼はまた、暗号化することにより、プロセス中に安全にこの情報を維持する方法を提案しているし、データを解読する。ここで

は、前述の機能を呼び出す完全なコードです:

$method = 'AES-256-CBC'; 
$secret = base64_decode('tvFD4Vl6Pu2CmqdKYOhIkEQ8ZO4XA4D8CLowBpLSCvA='); 
$iv = base64_decode('AVoIW0Zs2YY2zFm5fazLfg=='); 
$input = 'img=/dir/dir/hi-res-img.jpg&w=700&h=500'; 
var_dump($input); 
$compressed = compress($input); 
var_dump($compressed); 
$encrypted = openssl_encrypt($compressed, $method, $secret, false, $iv); 
var_dump($encrypted); 
$decrypted = openssl_decrypt($encrypted, $method, $secret, false, $iv); 
var_dump($decrypted); 
$decompressed = decompress($compressed); 
var_dump($decompressed); 

あなたはそれを試してみることができます。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 17877666) –

関連する問題