You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
23 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="x-dns-prefetch-control" content="on"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta name="renderer" content="webkit"><meta name="force-rendering" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="HandheldFriendly" content="True"><meta name="mobile-web-app-capable" content="yes"><link rel="shortcut icon" href="https://hans362-img.oss.0vv0.top/favicon.ico"><link rel="icon" type="image/png" sizes="16x16" href="https://hans362-img.oss.0vv0.top/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="https://hans362-img.oss.0vv0.top/favicon-32x32.png"><link rel="apple-touch-icon" sizes="180x180" href="https://hans362-img.oss.0vv0.top/apple-touch-icon.png"><link rel="mask-icon" href="https://hans362-img.oss.0vv0.top/safari-pinned-tab.svg"><title>PHP踩坑记录#1 | Hans362 &#39;s Blog</title><meta name="keywords" content="Web, PHP, Hans362"><meta name="description" content="这段时间在开发追番列表展示API人生中第一个PHP项目啊…迫于没有系统地学习过PHP只是略知一二在开发的过程中可以说是到处是坑于是乎…在我努力地现学现卖的过程下还是顺利地写完了这个程序 至于运行的效率以及代码质量么…不管了…(自信 那么针对踩过的坑就记录一下吧~(先说明一下 PHP 版本为7.1.26"><meta property="og:type" content="article"><meta property="og:title" content="PHP踩坑记录#1"><meta property="og:url" content="https://blog.hans362.cn/post/php-tips-1/"><meta property="og:site_name" content="Hans362 &#39;s Blog"><meta property="og:description" content="这段时间在开发追番列表展示API人生中第一个PHP项目啊…迫于没有系统地学习过PHP只是略知一二在开发的过程中可以说是到处是坑于是乎…在我努力地现学现卖的过程下还是顺利地写完了这个程序 至于运行的效率以及代码质量么…不管了…(自信 那么针对踩过的坑就记录一下吧~(先说明一下 PHP 版本为7.1.26"><meta property="og:locale" content="zh_CN"><meta property="og:image" content="https://hans362-img.oss.0vv0.top/2019/05/11/code-944499_1280.jpg?width=1920"><meta property="article:published_time" content="2019-02-18T08:40:00.000Z"><meta property="article:modified_time" content="2025-04-11T10:35:15.357Z"><meta property="article:author" content="Hans362"><meta property="article:tag" content="Web"><meta property="article:tag" content="PHP"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://hans362-img.oss.0vv0.top/2019/05/11/code-944499_1280.jpg?width=1920"><link rel="stylesheet" href="/css/style/main.css"><link rel="stylesheet" id="hl-default-theme" href="https://blog.hans362.cn/npm/highlight.js@10.1.2/styles/atom-one-light.css" media="none"><link rel="stylesheet" id="hl-dark-theme" href="https://blog.hans362.cn/npm/highlight.js@10.1.2/styles/atom-one-dark.css" media="none"><script src="/js/darkmode.js"></script><link rel="dns-prefetch" href="https://analytics.0vv0.top"><link rel="preconnect" href="https://hans362-img.oss.0vv0.top"><meta name="generator" content="Hexo 7.1.1"><link rel="alternate" href="/atom.xml" title="Hans362 's Blog" type="application/atom+xml"></head><body><div class="app-shell-loader">加载中...</div><div class="container" tabindex="-1"><header><div class="header__left"><a href="/" class="button"><span class="logo__text">Hans362 &#39;s Blog</span></a></div><div class="header__right"><div class="navbar__menus"><a href="/" class="button"><div class="navbar-menu">首页</div></a><a href="/archives/" class="button"><div class="navbar-menu">归档</div></a><a href="/tags/" class="button"><div class="navbar-menu">标签</div></a><a href="/bangumi/" class="button"><div class="navbar-menu">追番</div></a><a href="/links/" class="button"><div class="navbar-menu">友链</div></a><a href="/about/" class="button"><div class="navbar-menu">关于</div></a><a href="/atom.xml" class="button"><div class="navbar-menu">RSS</div></a></div><a href="/search/" class="button"><div id="btn-search"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="24" height="24" fill="currentColor" stroke="currentColor" stroke-width="32"><path d="M192 448c0-141.152 114.848-256 256-256s256 114.848 256 256-114.848 256-256 256-256-114.848-256-256z m710.624 409.376l-206.88-206.88A318.784 318.784 0 0 0 768 448c0-176.736-143.264-320-320-320S128 271.264 128 448s143.264 320 320 320a318.784 318.784 0 0 0 202.496-72.256l206.88 206.88 45.248-45.248z"></path></svg></div></a><a href="javaScript:void(0);" rel="external nofollow noreferrer" class="button"><div id="btn-toggle-dark"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg></div></a><a href="#" class="button" id="b2t" aria-label="回到顶部" title="回到顶部"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="32" height="32"><path d="M233.376 722.752L278.624 768 512 534.624 745.376 768l45.248-45.248L512 444.128zM192 352h640V288H192z" fill="currentColor"></path></svg> </a><a class="dropdown-icon button" tabindex="0"><div id="btn-dropdown"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="24" height="24" fill="none" stroke="currentColor" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round"><path fill="currentColor" d="M3.314,4.8h13.372c0.41,0,0.743-0.333,0.743-0.743c0-0.41-0.333-0.743-0.743-0.743H3.314c-0.41,0-0.743,0.333-0.743,0.743C2.571,4.467,2.904,4.8,3.314,4.8z M16.686,15.2H3.314c-0.41,0-0.743,0.333-0.743,0.743s0.333,0.743,0.743,0.743h13.372c0.41,0,0.743-0.333,0.743-0.743S17.096,15.2,16.686,15.2z M16.686,9.257H3.314c-0.41,0-0.743,0.333-0.743,0.743s0.333,0.743,0.743,0.743h13.372c0.41,0,0.743-0.333,0.743-0.743S17.096,9.257,16.686,9.257z"></path></svg></div></a><div class="dropdown-menus" id="dropdown-menus"><a href="/" class="dropdown-menu button">首页</a> <a href="/archives/" class="dropdown-menu button">归档</a> <a href="/tags/" class="dropdown-menu button">标签</a> <a href="/bangumi/" class="dropdown-menu button">追番</a> <a href="/links/" class="dropdown-menu button">友链</a> <a href="/about/" class="dropdown-menu button">关于</a> <a href="/atom.xml" class="dropdown-menu button">RSS</a></div></div></header><cover></cover><main><div class="post-content"><div class="post-title"><h1 class="post-title__text">PHP踩坑记录#1</h1><div class="post-title__meta"><a href="/archives/2019/02/" class="post-meta__date button">2019-02-18</a> <span class="separate-dot"></span> <a href="/categories/%E6%8A%80%E6%9C%AF%E5%90%91/" class="button"><span class="post-meta__cats">技术向</span></a><style>.post-meta__pv{color:var(--t-l);visibility:hidden;opacity:0;transition:.2s}</style><span class="separate-dot"></span> <span class="post-meta__pv"></span></div></div><aside class="post-side"><div class="post-side__toc"><div class="toc-title">文章目录</div><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#0x01-php-%E8%B0%83%E7%94%A8-api"><span class="toc-text">0x01 PHP 调用 API</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x02-php-%E8%A7%A3%E6%9E%90-json"><span class="toc-text">0x02 PHP 解析 Json</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#stdclass-object-%E7%9A%84%E8%BF%9B%E4%B8%80%E6%AD%A5%E8%A7%A3%E6%9E%90"><span class="toc-text">StdClass Object 的进一步解析</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#array-%E7%9A%84%E8%BF%9B%E4%B8%80%E6%AD%A5%E8%A7%A3%E6%9E%90"><span class="toc-text">Array 的进一步解析</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x03-for-%E5%BE%AA%E7%8E%AF%E7%9A%84%E7%AE%80%E5%8D%95%E5%BA%94%E7%94%A8"><span class="toc-text">0x03 For 循环的简单应用</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x04-php-%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6"><span class="toc-text">0x04 PHP 下载文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x05-php-%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8"><span class="toc-text">0x05 PHP 判断一个文件是否存在</span></a></li></ol></div></aside><a class="btn-toc button" id="btn-toc" tabindex="0"><svg viewBox="0 0 1024 1024" width="32" height="32" xmlns="http://www.w3.org/2000/svg"><path d="M128 256h64V192H128zM320 256h576V192H320zM128 544h64v-64H128zM320 544h576v-64H320zM128 832h64v-64H128zM320 832h576v-64H320z" fill="currentColor"></path></svg></a><div class="toc-menus" id="toc-menus"><div class="toc-title">文章目录</div><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#0x01-php-%E8%B0%83%E7%94%A8-api"><span class="toc-text">0x01 PHP 调用 API</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x02-php-%E8%A7%A3%E6%9E%90-json"><span class="toc-text">0x02 PHP 解析 Json</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#stdclass-object-%E7%9A%84%E8%BF%9B%E4%B8%80%E6%AD%A5%E8%A7%A3%E6%9E%90"><span class="toc-text">StdClass Object 的进一步解析</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#array-%E7%9A%84%E8%BF%9B%E4%B8%80%E6%AD%A5%E8%A7%A3%E6%9E%90"><span class="toc-text">Array 的进一步解析</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x03-for-%E5%BE%AA%E7%8E%AF%E7%9A%84%E7%AE%80%E5%8D%95%E5%BA%94%E7%94%A8"><span class="toc-text">0x03 For 循环的简单应用</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x04-php-%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6"><span class="toc-text">0x04 PHP 下载文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#0x05-php-%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8"><span class="toc-text">0x05 PHP 判断一个文件是否存在</span></a></li></ol></div><article class="post post__with-toc card"><div class="post__header"><img alt="Cover Image" class="lazy" src="https://hans362-img.oss.0vv0.top/2019/05/11/code-944499_1280.jpg?width=1920" srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXMzMyWlpYU2uzLAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-srcset="https://hans362-img.oss.0vv0.top/2019/05/11/code-944499_1280.jpg?width=1920"><div class="post__expire" id="post-expired-notify"><p><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" style="fill:#f5a623;stroke:#f5a623"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg> 本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。</p></div><script>(()=>{var e=Date.parse("2019-02-18"),t=(new Date).getTime(),t=Math.floor((t-e)/864e5);120<=t&&(document.querySelectorAll("#expire-date")[0].innerHTML=t,document.querySelectorAll("#post-expired-notify")[0].style.display="block")})()</script></div><div class="post__content"><html><head><script>var meting_api="https://api-v2.hans362.cn/vip/?server=:server&type=:type&id=:id&r=:r"</script><script class="meting-secondary-script-marker" src="/js/Meting.min.js"></script></head><body><p>这段时间在开发<a href="https://blog.hans362.cn/%E3%80%90%E9%A1%B9%E7%9B%AE%E5%8F%91%E5%B8%83%E3%80%91%E8%BF%BD%E7%95%AA%E5%88%97%E8%A1%A8%E5%B1%95%E7%A4%BAAPI/">追番列表展示API</a>人生中第一个PHP项目啊…迫于没有系统地学习过PHP只是略知一二在开发的过程中可以说是到处是坑于是乎…在我努力地现学现卖的过程下还是<s>顺利</s>地写完了这个程序</p><p>至于运行的效率以及代码质量么…不管了…(自信</p><p><img src="https://hans362-img.oss.0vv0.top/2019/02/18/ybsbny.jpeg?width=1920" class="lazy" data-srcset="https://hans362-img.oss.0vv0.top/2019/02/18/ybsbny.jpeg?width=1920" srcset="/loading.gif" alt=""></p><p>那么针对踩过的坑就记录一下吧~(先说明一下 PHP 版本为7.1.26</p><span id="more"></span><h2 id="0x01-php-调用-api"><a class="markdownIt-Anchor" href="#0x01-php-调用-api"></a> 0x01 PHP 调用 API</h2><p>本案例中 API 为 BiliBili 的 Bangumi API</p><p><code>https://space.bilibili.com/ajax/Bangumi/getList?mid={user.id}</code></p><p>其中<code>{user.id}</code>为用户的UID</p><p>正确请求后可得到 json 返回该用户的追番列表</p><p>那么 PHP 应该如何调用这个 API 并将返回的 json 存储于变量中呢?</p><p>首先建立一个 function</p><pre><code class="hljs awk"><span class="hljs-keyword">function</span> curl_get_https(<span class="hljs-variable">$url</span>) {
<span class="hljs-variable">$curl</span> = curl_init(); <span class="hljs-regexp">//</span> 启动一个CURL会话
curl_setopt(<span class="hljs-variable">$curl</span>, CURLOPT_URL, <span class="hljs-variable">$url</span>);
curl_setopt(<span class="hljs-variable">$curl</span>, CURLOPT_RETURNTRANSFER, <span class="hljs-number">1</span>); <span class="hljs-regexp">//</span> TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt(<span class="hljs-variable">$curl</span>, CURLOPT_SSL_VERIFYPEER, false); <span class="hljs-regexp">//</span> 跳过证书检查
<span class="hljs-variable">$tmpInfo</span> = curl_exec(<span class="hljs-variable">$curl</span>); <span class="hljs-regexp">//</span> 返回api的json对象
curl_close(<span class="hljs-variable">$curl</span>);
return <span class="hljs-variable">$tmpInfo</span>; <span class="hljs-regexp">//</span> 返回json对象
}</code></pre><p>搞定后程序中就可以随时调用这个function</p><pre><code class="hljs reasonml">$uid = $_GET<span class="hljs-literal">["<span class="hljs-identifier">uid</span>"]</span>; <span class="hljs-comment">//获取提交的UID</span>
$file = curl<span class="hljs-constructor">_get_https('<span class="hljs-params">https</span>:<span class="hljs-operator">/</span><span class="hljs-operator">/</span><span class="hljs-params">space</span>.<span class="hljs-params">bilibili</span>.<span class="hljs-params">com</span><span class="hljs-operator">/</span><span class="hljs-params">ajax</span><span class="hljs-operator">/</span>Bangumi<span class="hljs-operator">/</span><span class="hljs-params">getList</span>?<span class="hljs-params">mid</span>=' . $<span class="hljs-params">uid</span>)</span>;</code></pre><p>这样返回的json就被存储于<code>$file</code>变量中了</p><h2 id="0x02-php-解析-json"><a class="markdownIt-Anchor" href="#0x02-php-解析-json"></a> 0x02 PHP 解析 Json</h2><p>假设 json 数据已经存储与<code>$file</code>变量中,解析 json 非常简单:</p><pre><code class="hljs arcade"><span class="hljs-symbol">$res</span> = json_decode(<span class="hljs-symbol">$file</span>);</code></pre><p>但是请注意,这种方式 json 将以 StdClass Object 的形式存储,如果需要以 Array 的形式存储,则应该这样:</p><pre><code class="hljs arcade"><span class="hljs-symbol">$res</span> = json_decode(<span class="hljs-symbol">$file</span>, <span class="hljs-literal">true</span>);</code></pre><h3 id="stdclass-object-的进一步解析"><a class="markdownIt-Anchor" href="#stdclass-object-的进一步解析"></a> StdClass Object 的进一步解析</h3><p>假设解析后的内容存储于<code>$res</code>中,<code>$res</code>下有一个分项叫<code>data</code><code>data</code>下有一个分项叫<code>pages</code>,那我要获取<code>pages</code>的值,应该怎么办呢?</p><p><code>$pages = $res-&gt;data-&gt;pages;</code></p><p>这样就可以将<code>pages</code>的值存储于<code>$pages</code></p><h3 id="array-的进一步解析"><a class="markdownIt-Anchor" href="#array-的进一步解析"></a> Array 的进一步解析</h3><p>假设解析后的内容存储于<code>$res</code></p><p>首先要清楚 Array 的结构,用以下代码可输出:</p><p><code>print_r($res);</code></p><p>接着就要用到<code>foreach()</code>函数一层层完成遍历,相关用法不再赘述,可自行查找相关资料</p><h2 id="0x03-for-循环的简单应用"><a class="markdownIt-Anchor" href="#0x03-for-循环的简单应用"></a> 0x03 For 循环的简单应用</h2><pre><code class="hljs awk"><span class="hljs-keyword">for</span> (<span class="hljs-variable">$x</span> = <span class="hljs-number">1</span>; <span class="hljs-variable">$x</span> &lt;= <span class="hljs-number">10</span>; <span class="hljs-variable">$x</span>++) {
<span class="hljs-regexp">//</span> Put your code here.
}</code></pre><p>以上代码可完成<code>$x</code>从1至10的循环</p><h2 id="0x04-php-下载文件"><a class="markdownIt-Anchor" href="#0x04-php-下载文件"></a> 0x04 PHP 下载文件</h2><p>假设要下载到运行目录下的 cache 目录,下载链接存储于<code>$url</code>变量中</p><pre><code class="hljs mel">$url = $result[<span class="hljs-string">'cover'</span>];
$path = <span class="hljs-string">'cache/'</span>;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, <span class="hljs-number">1</span>);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, <span class="hljs-number">30</span>);
$img = curl_exec($ch);
curl_close($ch);
$filename = pathinfo($url, PATHINFO_BASENAME);
$resource = <span class="hljs-keyword">fopen</span>($path . $filename, <span class="hljs-string">'a'</span>);
<span class="hljs-keyword">fwrite</span>($resource, $img);
<span class="hljs-keyword">fclose</span>($resource);</code></pre><h2 id="0x05-php-判断一个文件是否存在"><a class="markdownIt-Anchor" href="#0x05-php-判断一个文件是否存在"></a> 0x05 PHP 判断一个文件是否存在</h2><p>假设文件名存储于<code>$filename</code>变量中</p><pre><code class="hljs kotlin"><span class="hljs-keyword">if</span> (file_exists($filename)) {
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
} <span class="hljs-keyword">else</span> {
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}</code></pre><p>好啦暂时就整理这么多,由于本人没有系统地学习过 PHP本文中的部分表述可能存在漏洞或描述不清各位大佬轻喷…如果您发现本文中有错误请务必在下方评论区指出我会感激不尽~</p></body></html></div><div class="license"><div class="license-title">PHP踩坑记录#1</div><div class="license-link"><a href="https://blog.hans362.cn/post/php-tips-1/">https://blog.hans362.cn/post/php-tips-1/</a></div><div class="license-meta"><div class="license-meta-item"><div class="license-meta-title">本文作者</div><div class="license-meta-text">Hans362</div></div><div class="license-meta-item"><div class="license-meta-title">最后更新</div><div class="license-meta-text">2019-02-18</div></div><div class="license-meta-item"><div class="license-meta-title">许可协议</div><div class="license-meta-text"><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" rel="nofollow noopener noreferrer" target="_blank">CC BY-NC-SA 4.0</a></div></div></div><div>转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!</div></div><div class="post-footer__cats"><a href="/categories/%E6%8A%80%E6%9C%AF%E5%90%91/" class="post-cats__link button">技术向</a><a href="/tags/Web/" class="post-tags__link button"># Web</a><a href="/tags/PHP/" class="post-tags__link button"># PHP</a></div></article><div class="nav"><div class="nav__prev"><a href="/post/2019-shanghai-hsee/" class="nav__link"><div><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M589.088 790.624L310.464 512l278.624-278.624 45.248 45.248L400.96 512l233.376 233.376z" fill="#808080"></path></svg></div><div><div class="nav__label">上一篇</div><div class="nav__title">2019年上海中考大吐槽¯\_(ツ)_/¯</div></div></a></div><div class="nav__next"><a href="/post/bangumi-list-display/" class="nav__link"><div><div class="nav__label">下一篇</div><div class="nav__title">【项目发布】追番列表展示API</div></div><div><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M434.944 790.624l-45.248-45.248L623.04 512l-233.376-233.376 45.248-45.248L713.568 512z" fill="#808080"></path></svg></div></a></div></div><div class="post__sponsers card"><div class="sponser-label">喜欢这篇文章吗?考虑支持一下作者吧~</div><a class="sponser-button button" href="https://afdian.net/@hans362" rel="external nofollow noreferrer" target="_blank" data-type="afdian">爱发电</a> <a class="sponser-button button" data-type="alipay">支付宝<img class="sponser-qrcode" src="https://hans362-img.oss.0vv0.top/2021/08/05/68281340.jpg"></a></div><div class="post__comments post__with-toc card" id="comment"><h4>评论</h4><div id="disqus_thread">您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。</div></div></div></main><footer><p class="footer-copyright">Copyright © 2017&nbsp;-&nbsp;2025 <a href="/">Hans362 &#39;s Blog</a></p><p>Powered by <a href="https://hexo.io" target="_blank">Hexo</a> | Theme - <a href="https://github.com/ChrAlpha/hexo-theme-cards" target="_blank">Cards</a></p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8746554831230893" data-ad-slot="6356225601" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script></footer></div><script defer src="https://blog.hans362.cn/npm/vanilla-lazyload@17.8.3/dist/lazyload.min.js"></script><script>window.lazyLoadOptions={elements_selector:".lazy"}</script><script async defer data-website-id="5d181692-8a81-4c20-a282-cee87a6b90ef" src="https://analytics.0vv0.top/vue.js"></script><script src="/js/pageviews.js"></script><link rel="stylesheet" href="https://blog.hans362.cn/npm/katex@0.16.0/dist/katex.min.css" crossorigin="anonymous"><script>function loadComment(){let n,e;(n=document.createElement("script")).src="https://blog.hans362.cn/js/disqus.js",document.body.appendChild(n),n.onload=()=>{new DisqusJS({shortname:"hans362-s-blog",siteName:"Hans362 &#39;s Blog",api:"https://api-v3.hans362.cn/",apikey:"8Z1UVT4UOk22yNyk9MhpqQ0FLb27Hb1bpV066b4v9zOFie0GQ6VCoJ9TJwoGlCVF",admin:"hans362",identifier:"post/php-tips-1/",url:"https://blog.hans362.cn/post/php-tips-1/",nesting:"4"})},(e=document.createElement("link")).rel="stylesheet",e.href="https://blog.hans362.cn/css/disqusjs.css",document.head.appendChild(e)}var runningOnBrowser="undefined"!=typeof window,isBot=runningOnBrowser&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro|msn)bot|crawl|spider|yand|duckgo/i.test(navigator.userAgent),supportsIntersectionObserver=runningOnBrowser&&"IntersectionObserver"in window;setTimeout(function(){var e;!isBot&&supportsIntersectionObserver?(e=new IntersectionObserver(function(n){n[0].isIntersecting&&(loadComment(),e.disconnect())},{threshold:[0]})).observe(document.getElementById("comment")):loadComment()},1)</script></body></html>