この記事では主にPHPのロングURLとショートURLの実装方法を紹介しますので、必要な方は参考にしてください
その名の通り、ロングリンクは非常に長いリンクです。長いリンクは短いリンクを生成することができ、短いリンクは長いリンクから生成されます。
ロングリンクとショートリンクとは何ですか?
その名前が示すように、ロングリンクは非常に長いリンクであり、ショートリンクは非常に短いリンクです。長いリンクは短いリンクを生成することができ、短いリンクは長いリンクから生成されます。
なぜ長いリンクと短いリンクを使用するのでしょうか? 長いリンクと短いリンクを比較すると、長いリンクよりも短くて美しいことがわかります。 セキュリティ、長いリンクには http://xxx.xxx.xxx?id=1¶m1=san などのいくつかのパラメータが含まれる場合があります。URL が get メソッドを使用していることが簡単にわかり、どのパラメータが使用されているかも確認できます。と要求されました。ただし、アクセスできるのは短いリンク http://t.cn/RNGQRUJ のみで、そこにどのようなパラメータやその他の条件が含まれているかを簡単に確認することはできません。
サンプルコードのダウンロードアドレス: リンク: https://pan.baidu.com/s/1kVh4FQ3 パスワード: 4r8p
利用シナリオ
Weiboコンテンツの共有SMSに含まれるリンク
WeChat共有リンク
実装方法
Baidu百科事典の説明によると、長いリンクから短いリンクへの変換は主にmd5暗号化を使用して変換を実現します。
コードの実装
カールツール関数を作成する
// SINA_APPKEY就是你在微信开发者平台的appkey define('SINA_APPKEY', ''); function curlQuery($url) { //设置附加HTTP头 $addHead = array( "Content-type: application/json", ); //初始化curl,当然,你也可以用fsockopen代替 $curl_obj = curl_init(); //设置网址 curl_setopt($curl_obj, CURLOPT_URL, $url); //附加Head内容 curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead); //是否输出返回头信息 curl_setopt($curl_obj, CURLOPT_HEADER, 0); //将curl_exec的结果返回 curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1); //设置超时时间 curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15); //执行 $result = curl_exec($curl_obj); //关闭curl回话 curl_close($curl_obj); return $result; }
//根据长网址获取短网址 function sinaShortenUrl($long_url) { //拼接请求地址,此地址你可以在官方的文档中查看到 $url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . SINA_APPKEY . '&url_long=' . $long_url; //获取请求结果 $result = curlQuery($url); //下面这行注释用于调试, //print_r($result);exit(); //解析json $json = json_decode($result); //异常情况返回false if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '') { return false; } else { return $json[0]->url_short; } } //根据短网址获取长网址,此函数重用了不少sinaShortenUrl中的代码,以方便你阅读对比,你可以自行合并两个函数 function sinaExpandUrl($short_url) { //拼接请求地址,此地址你可以在官方的文档中查看到 $url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . SINA_APPKEY . '&url_short=' . $short_url; //获取请求结果 $result = curlQuery($url); //下面这行注释用于调试 //print_r($result);exit(); //解析json $json = json_decode($result); //异常情况返回false if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '') { return false; } else { return $json[0]->url_long; } }
//简单处理下url,sina对于没有协议(http://)开头的和不规范的地址会返回错误 function filterUrl($url = '') { $url = trim(strtolower($url)); $url = trim(preg_replace('/^http:\//', '', $url)); if ($url == '') { return false; } else { return urlencode('http://' . $url); } }
えー
概要
以上がPHPで長いURLと短いURLを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。