2017-11-08 9 views
0

Ich möchte eine Google Adwords ID als subid meinem Partnerlink hinzufügen. Das Problem ist, dass mein Partnerprogramm so lange SubIDs nicht erlaubt. Gibt es eine Möglichkeit, es kürzer zu machen?Wie man eine Schnur kürzer macht?

Zum Beispiel bekomme ich eine ID von Google, die wie folgt aussieht:

jdfJHGsds57JHJsdkjjkskdfj324GFGHJ3334GHJ 

So wird mein Link wie folgt aussehen:

www.mysite.com/?affofferid=jdfJHGsds57JHJsdkjjkskdfj324GFGHJ3334GHJ 

ich die Google-ID kürzer durch Codierung vornehmen möchten oder jede andere Methode. Wie kann ich das machen?

Ich möchte in der Lage sein, die ID später manuell zu ihrem Original zurück zu konvertieren.

+1

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

+1

Teilen Sie die Zeichenfolge in zwei Variablen und fügen Sie sie hinzu zur URL als zwei verschiedene URL-Parameter. Und füge sie später zu einer einzigen Saite hinzu. – Gunaseelan

Antwort

0

Werfen Sie einen Blick auf diesen Beitrag: Shortest possible encoded string with decode possibility (shorten url) using only PHP

Er fähig ist, eine 39 Zeichen String in eine wieder 30 Zeichen es ein und dekodieren zu kodieren.

Hier ist die Codierung Funktion:

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; 
} 

Und die Dekodierung Funktion:

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, '=')); 
} 

Er ist auch eine Art und Weise schlägt diese Informationen sicher während des Prozesses zu halten durch die Verschlüsselung und Entschlüsseln der Daten.

Hier ist der vollständige Code, der die oben genannten Funktionen aufruft:

$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); 

Sie könnten es versuchen.

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/17877666) –

Verwandte Themen