Heim >Backend-Entwicklung >PHP-Problem >So konvertieren Sie numerische und String-IDs in PHP ineinander

So konvertieren Sie numerische und String-IDs in PHP ineinander

藏色散人
藏色散人Original
2020-10-19 11:40:392437Durchsuche

So implementieren Sie die gegenseitige Konvertierung zwischen PHP-Zahlen und String-IDs: Öffnen Sie zuerst die entsprechende PHP-Codedatei und verwenden Sie dann „alphaID(9007199254740989);“, um die gegenseitige Konvertierung zwischen Zahlen und String-IDs zu realisieren.

So konvertieren Sie numerische und String-IDs in PHP ineinander

Empfohlen: „PHP-Video-Tutorial

Funktion zur gegenseitigen Konvertierung von PHP-Nummern und String-IDs (ähnlich der Youku-ID)

Ich weiß nicht, ob Sie es bemerkt haben, ähnlich wie Youku, Tencent Video und andere Videos Der Link scheint diesem zu ähneln

Der Code lautet wie folgt:

http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html

Achten Sie auf den Teil id_xxx. Sie können ihn nicht verstehen, aber Sie können nicht leugnen, dass dies die ID ist Dies ist nicht der Fall. Ein ausländischer Experte hat bereits 2009 einen Code für PHP geschrieben. Die Generierungsmethode /Python/Javascript/Java/SQL zeigt, wie veraltet ich jetzt bin, in der Hoffnung, dass der Geist des Teilens anhält für immer.

Der Code lautet wie folgt:

<?php
/** 
 * @author   Kevin van Zonneveld <kevin@vanzonneveld.net>
 * @author   Simon Franz
 * @author   Deadfish
 * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 * @license   http://www.opensource.org/licenses/bsd-license.php New BSD Licence
 * @version   SVN: Release: $Id: alphaID.inc.php 344 2009-06-10 17:43:59Z kevin $
 * @link   http://kevin.vanzonneveld.net/
 *
 * @param mixed   $in      String or long input to translate
 * @param boolean $to_num  Reverses translation when true
 * @param mixed   $pad_up  Number or boolean padds the result up to a specified length
 * @param string  $passKey Supplying a password makes it harder to calculate the original ID
 *
 * @return mixed string or long
 */
function alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
{
  $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  if ($passKey !== null) {
      // Although this function&#39;s purpose is to just make the
      // ID short - and not so much secure,
      // with this patch by Simon Franz (http://blog.snaky.org/)
      // you can optionally supply a password to make it harder
      // to calculate the corresponding numeric ID
 
      for ($n = 0; $n<strlen($index); $n++) {
          $i[] = substr( $index,$n ,1);
      }
 
      $passhash = hash(&#39;sha256&#39;,$passKey);
      $passhash = (strlen($passhash) < strlen($index))
          ? hash(&#39;sha512&#39;,$passKey)
          : $passhash;
 
      for ($n=0; $n < strlen($index); $n++) {
          $p[] =  substr($passhash, $n ,1);
      }
 
      array_multisort($p,  SORT_DESC, $i);
      $index = implode($i);
  }
 
  $base  = strlen($index);
 
  if ($to_num) {
      // Digital number  < 0) {
              $out -= pow($base, $pad_up);
          }
      }
      $out = sprintf(&#39;%F&#39;, $out);
      $out = substr($out, 0, strpos($out, &#39;.&#39;));
  } else {
      // Digital number  -->>  alphabet letter code
      if (is_numeric($pad_up)) {
          $pad_up--;
          if ($pad_up > 0) {
              $in += pow($base, $pad_up);
          }
      }
 
      $out = "";
      for ($t = floor(log($in, $base)); $t >= 0; $t--) {
          $bcp = bcpow($base, $t);
          $a   = floor($in / $bcp) % $base;
          $out = $out . substr($index, $a, 1);
          $in  = $in - ($a * $bcp);
      }
      $out = strrev($out); // reverse
  }
 
  return $out;
}

Anwendungsbeispiel

Der Code lautet wie folgt:

<?php
alphaID(9007199254740989);

Das Ausführungsergebnis wird „fE2XnNGpF“ zurückgegeben, wir können es uns als Verschlüsselung und als Anti-Entschlüsselung vorstellen

The Der Code lautet wie folgt:

<?php
alphaID(&#39;fE2XnNGpF&#39;, true);

Dann in die reelle Zahl „9007199254740989“ umwandeln. Die Methode kann auch die Verschlüsselung mithilfe eines Schlüssels unterstützen, sodass andere Ihre echte ID nicht entschlüsseln können.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie numerische und String-IDs in PHP ineinander. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn