>백엔드 개발 >PHP 문제 >PHP에서 긴 링크를 짧은 링크로 변환하는 방법

PHP에서 긴 링크를 짧은 링크로 변환하는 방법

PHPz
PHPz원래의
2023-04-19 09:16:571355검색

광활한 인터넷 세상에서 긴 링크는 일상생활에서 피할 수 없는 일부가 되었습니다. 긴 링크는 사람들이 기억하기 어렵게 만들 뿐만 아니라 텍스트 레이아웃 측면에서도 매우보기 흉합니다. 그렇다면 긴 링크를 짧은 링크로 변환하는 방법은 무엇일까요? PHP는 널리 사용되는 프로그래밍 언어입니다. 이 기사에서는 PHP를 사용하여 긴 링크를 짧은 링크로 간단히 변환하는 방법을 소개합니다.

짧은 링크에 대한 간략한 소개

짧은 링크는 인터넷을 기반으로 한 특수 링크로, 특수 알고리즘을 사용하여 긴 링크를 짧은 링크로 변환함으로써 링크의 미적 특성, 가독성 및 공유성을 향상시킵니다. 짧은 링크는 일반적으로 길이가 10~20자에 불과한 짧은 문자열 형태입니다. 긴 링크를 짧은 링크로 변환하면 링크를 공유하고 전파하는 것이 더 편리할 뿐만 아니라 방문 횟수도 더 잘 계산할 수 있습니다. 링크의.

php를 사용하여 짧은 링크를 생성하는 방법

짧은 링크 생성은 두 단계로 나누어야 합니다. 첫 번째 단계는 짧은 링크 생성 알고리즘을 설계하는 것이고, 두 번째 단계는 짧은 링크를 데이터베이스에 저장하는 것입니다. 쿼리할 때 짧은 링크를 구문 분석합니다. 긴 링크를 가져와서 점프합니다.

짧은 링크 생성 알고리즘 설계

일반적으로 짧은 링크 생성 알고리즘은 다음 요구 사항을 충족해야 합니다.

1 생성된 짧은 링크는 고유해야 하며 반복되지 않아야 합니다.

2. 생성된 짧은 링크는 가능한 한 짧은 문자열에 가까워야 합니다.

3. 생성된 짧은 링크는 되돌릴 수 있어야 합니다. 즉, 짧은 링크를 통해 긴 링크를 복원할 수 있습니다.

현재 일반적으로 사용되는 짧은 링크 알고리즘은 두 가지가 있습니다. 하나는 긴 링크를 암호화하여 짧은 링크로 변환하는 것입니다. 일반적으로 사용되는 암호화 알고리즘에는 md5 및 base64가 있지만 이 알고리즘의 짧은 링크 길이는 더 길어집니다. 또 다른 알고리즘은 긴 링크를 10진수 또는 16진수로 된 짧은 링크로 변환하고 현재 타임스탬프와 사용자 정의 값을 기반으로 생성하는 것입니다. 이 알고리즘은 생성 속도가 더 빠르며 생성된 짧은 링크는 길이가 더 짧고 반복되지 않습니다. .

다음으로 두 번째 알고리즘을 사용하여 짧은 링크를 생성하는 PHP 구현 방법을 소개합니다.

먼저 몇 가지 변수를 정의합니다:

$url = 'http://www.example.com/longurl'; //待转换的长链接
$base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; //定义62进制字符
$prefix = 'http://s.com/'; //自定义短链接前缀

다음으로 긴 링크를 10진수 또는 16진수 짧은 링크로 변환해야 합니다.

$hex = md5($url);
$hexLen = strlen($hex);
$subHexLen = $hexLen / 8;
$output = array();

for ($i = 0; $i < $subHexLen; $i++) {
    $subHex = substr($hex, $i * 8, 8);
    $int = 0x3FFFFFFF & (1 * (&#39;0x&#39; . $subHex));
    $out = &#39;&#39;;
    for ($j = 0; $j < 6; $j++) {
        $val = 0x0000003D & $int;
        $out .= $base[$val];
        $int = $int >> 5;
    }
    $output[] = $out;
}

$key = array_rand($output);
$shortUrl = $prefix . $output[$key];

위 코드에서는 먼저 md5를 사용하여 긴 링크 암호화를 수행한 다음 처리합니다. 암호화된 결과를 10진수 또는 62자리의 짧은 링크로 변환합니다. 다음으로, 고유한 키 값을 무작위로 생성하여 여러 개의 짧은 링크 중에서 하나의 짧은 링크를 선택하고, 마지막으로 Custom Prefix와 선택된 고유한 짧은 링크를 최종 짧은 링크로 접합합니다.

짧은 링크를 데이터베이스에 저장

위 코드에서는 짧은 링크를 생성했지만 아직 데이터베이스에 저장하지 않았습니다. 여기서는 짧은 링크를 데이터베이스에 저장하기 위해 mysql 데이터베이스를 사용합니다.

include 'config.php'; //包含数据库连接配置文件
$long_url = 'http://www.example.com/longurl'; //长链接

//生成短链接的代码
$hex = md5($long_url);
$hexLen = strlen($hex);
$subHexLen = $hexLen / 8;
$output = array();

for ($i = 0; $i < $subHexLen; $i++) {
    $subHex = substr($hex, $i * 8, 8);
    $int = 0x3FFFFFFF & (1 * (&#39;0x&#39; . $subHex));
    $out = &#39;&#39;;
    for ($j = 0; $j < 6; $j++) {
        $val = 0x0000003D & $int;
        $out .= $base[$val];
        $int = $int >> 5;
    }
    $output[] = $out;
}

$key = array_rand($output);
$short_url = $prefix . $output[$key];

//将短链接存储到数据库中
$insert_sql = "INSERT INTO `short_url` (`long_url`, `short_url`, `create_time`) VALUES ('{$long_url}', '{$short_url}', NOW())"; //将长链接和短链接插入数据库中
$conn->query($insert_sql); //执行插入操作
$conn->close(); //关闭数据库连接

위 코드에서는 long_url과 short_url이라는 두 개의 변수를 정의하여 각각 긴 링크와 짧은 링크를 저장한 다음 SQL 문을 삽입하여 긴 링크와 짧은 링크를 short_url 테이블에 삽입합니다. 이 중 create_time 필드는 짧은 링크가 생성된 시간을 저장하며, 데이터 타입은 DATETIME이다.

짧은 링크를 통해 긴 링크로 점프

마지막으로 짧은 링크를 구문 분석하고 데이터베이스에서 해당 긴 링크를 쿼리한 후 점프해야 합니다. 코드는 다음과 같이 구현됩니다.

include 'config.php'; //包含数据库连接配置文件
$short_url = 'http://s.com/abcd'; //短链接

//从数据库中查询出对应的长链接
$select_sql = "SELECT long_url FROM `short_url` WHERE `short_url`='{$short_url}'";
$result = $conn->query($select_sql); //执行查询操作
$row = $result->fetch_array(MYSQLI_ASSOC);

//跳转到长链接
if ($row) {
    $long_url = $row['long_url'];
    header('location:' . $long_url); //跳转到原来的长链接
    exit;
} else {
    echo '短链接不存在'; //如果短链接不存在,则输出短链接不存在
}
$conn->close(); //关闭数据库连接

위 코드에서는 먼저 짧은 링크를 매개변수로 사용하여 데이터베이스를 쿼리하고 해당 긴 링크를 찾은 다음, 존재하는 경우 사용자를 긴 링크로 점프하고, 그렇지 않으면 출력합니다. 짧은 링크가 존재하지 않습니다.

요약

php는 널리 사용되는 프로그래밍 언어입니다. PHP의 기본 구문과 함수 라이브러리를 숙지하면 긴 링크를 짧은 링크로 변환하는 기능을 쉽게 구현할 수 있습니다. 이 기사에서 소개하는 짧은 링크를 생성하는 알고리즘은 가장 복잡하지는 않지만 컴퓨팅 속도와 링크 고유성이 뛰어나며 대부분의 애플리케이션 시나리오에 적합합니다. 짧은 링크 생성의 안정성과 쿼리 속도를 향상시키기 위해 독자는 실제 요구 사항에 따라 코드를 개선하는 것이 좋습니다.

위 내용은 PHP에서 긴 링크를 짧은 링크로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.