Maison  >  Article  >  développement back-end  >  Partage d'exemples d'algorithmes pour convertir des URL en URL courtes à l'aide de PHP

Partage d'exemples d'algorithmes pour convertir des URL en URL courtes à l'aide de PHP

墨辰丷
墨辰丷original
2018-06-01 11:23:221674parcourir

Une URL courte, comme son nom l'indique, est une URL de forme relativement courte. À l’ère du Web 2.0 d’aujourd’hui, je dois dire que c’est une tendance. Il existe déjà de nombreux services similaires. À l'aide d'URL courtes, vous pouvez remplacer les URL longues d'origine par des URL courtes, permettant ainsi aux utilisateurs de partager plus facilement des liens. Voyons comment utiliser PHP pour implémenter cette fonction dans Friends. besoin peut s'y référer.

Avant-propos

Le service d'URL raccourcies n'est peut-être plus étranger à beaucoup de mes amis. Il est désormais disponible dans la plupart des rappels par e-mail mobiles Weibo. et d'autres endroits. Il existe de nombreux modèles d'application et occupent un certain marché. On estime que de nombreux amis l'utilisent maintenant.

Avantages des liens courts :

1. Exigences de contenu
2. Convivial ;
3.

Ce qui suit est l'algorithme de conversion d'URL courtes à l'aide de PHP. Le code est le suivant :

PHP

<.>

<?php
//短网址生成算法
class ShortUrl {
  
  //字符表
  public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
  public static function encode($url)
  {
    $key = &#39;abc&#39;; //加盐
    $urlhash = md5($key . $url);
    $len = strlen($urlhash);
 
    //将加密后的串分成4段,每段4字节,对每段进行计算,一共可以生成四组短连接
    for ($i = 0; $i < 4; $i++) {
      $urlhash_piece = substr($urlhash, $i * $len / 4, $len / 4);
      
      //将分段的位与0x3fffffff做位与,0x3fffffff表示二进制数的30个1,即30位以后的加密串都归零
      //此处需要用到hexdec()将16进制字符串转为10进制数值型,否则运算会不正常
      $hex = hexdec($urlhash_piece) & 0x3fffffff;
 
      //域名根据需求填写
      $short_url = "http://t.cn/";
      
      //生成6位短网址
      for ($j = 0; $j < 6; $j++) {
        
        //将得到的值与0x0000003d,3d为61,即charset的坐标最大值
        $short_url .= self::$charset[$hex & 0x0000003d];
        
        //循环完以后将hex右移5位
        $hex = $hex >> 5;
      }
 
      $short_url_list[] = $short_url;
    }
 
    return $short_url_list;
  }
}
 
$url = "http://www.sunbloger.com/";
$short = ShortUrl::encode($url);
print_r($short);
?>

Habituellement, nous utilisons le premier groupe de quatre groupes d'URL.

Il convient de noter ici que cet algorithme est irréversible. Par conséquent, l'approche habituelle consiste à stocker l'URL courte et l'URL d'origine correspondante dans la base de données. Lors de l'accès, l'URL d'origine correspondante est supprimée. à partir de l'URL de la base de données, passez par 301 ou l'en-tête.

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

phpExplication détaillée de la méthode de gestion des exceptions PDO

PHP lit le zip Méthode de fichier

Plan de mise en œuvre de la connexion unique de la version PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn