<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[刘新修]]></title> 
<link>http://pic1.liuxinxiu.com:80/index.php</link> 
<description><![CDATA[刘新修的个人博客 (Liuxinxiu'S Blog)]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[刘新修]]></copyright>
<item>
<link>http://pic1.liuxinxiu.com:80/s/346/</link>
<title><![CDATA[Dioxus由DioxusLabs开发的全栈应用框架 旨在简化跨平台应用的开发]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Tue, 10 Dec 2024 09:14:59 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/346/</guid> 
<description>
<![CDATA[ 
	<p>Dioxus是一个现代的、轻量级的、用于构建跨平台UI的库，灵感来源于React。它以其高性能、简洁的API和丰富的生态系统，为开发者提供了一种高效开发原生应用的新方式。</p><div>&nbsp;</div><div><strong>项目简介</strong></div><div>Dioxus的核心目标是为移动应用、Web应用、桌面应用以及服务器端渲染提供一致性的开发体验。使用Rust编程语言编写，它提供了与React类似的语法和概念，但利用了Rust的强大功能，如类型安全和编译时检查，从而在性能上取得显著优势。</div><div>&nbsp;</div><div><strong>技术分析</strong></div><div>Dioxus的架构基于组件模型，允许开发者以声明式的方式创建可复用的UI元素。与React类似，它使用虚拟DOM来减少对实际DOM的操作，不过Dioxus进一步优化，通过Rust的静态分析能力避免了不必要的更新，实现了更快的渲染速度。</div><div>&nbsp;</div><div>此外，Dioxus还支持SSR（Server-Side Rendering）和SSG（Static Site Generation），并可以无缝地与WebAssembly集成，这使得它能够被广泛应用于Web开发和后端渲染场景。</div><div>&nbsp;</div><div><strong>应用场景</strong></div><div>移动应用开发：Dioxus提供了一套完整的工具链，让你可以用Rust直接开发iOS和Android应用。</div><div>Web应用：你可以创建高效的单页应用，并受益于Rust的安全性和性能。</div><div>桌面应用：借助Electron或其它桌面应用框架，Dioxus可以轻松构建桌面应用。</div><div>服务器渲染：对于SEO友好的网站或者需要快速首屏加载的应用，Dioxus的SSR功能非常实用。</div><div>&nbsp;</div><div><strong>特点</strong></div><div>高性能：Rust的零成本抽象和编译时优化，使Dioxus的性能远超传统的JavaScript解决方案。</div><div>类型安全：利用Rust的类型系统，Dioxus确保代码在运行前无类型错误，提高了软件的稳定性。</div><div>简洁API：Dioxus的API设计借鉴了React，对熟悉React的开发者来说，学习曲线较平缓。</div><div>跨平台兼容：一套代码，多平台运行，大大提高了开发效率。</div><div>强大的社区支持：Dioxus拥有活跃的开发者社区，不断推出新的库和工具，丰富生态体系。</div><div>&nbsp;</div><div><div>快速使用指南</div><div>安装 CLI 工具：首先，安装 Dioxus 提供的 CLI 工具。可以通过以下命令进行安装：</div><div>cargo install dioxus-cli</div><div>&nbsp;</div><div>创建新项目：使用 CLI 工具创建一个新的 Dioxus 项目：</div><div>dioxus new my_project</div><div>&nbsp;</div><div>运行开发服务器：进入项目目录并启动开发服务器：</div><div>cd my_project dioxus serve</div><div>&nbsp;</div><div>编写代码：在 src 目录下编写你的应用代码。Dioxus 使用类似 JSX 的语法，使得编写 UI 代码变得简单直观。</div><div>&nbsp;</div><div>打包和部署：当应用开发完成后，可以使用以下命令进行打包和部署：</div><div>dioxus bundle --release</div><div>&nbsp;</div><div>通过以上步骤，你可以快速上手 Dioxus 并开始构建跨平台应用。Dioxus 的高性能、易用性和强大的功能使其成为现代应用开发的理想选择。</div><div>&nbsp;</div></div><div>&nbsp;</div><div><strong>结论</strong></div><div>如果你正在寻找一种能够提升应用性能，同时保持开发效率的技术栈，Dioxus值得你尝试。其结合了React的易用性和Rust的高性能，为开发者带来前所未有的开发体验。无论是新项目还是现有项目的重构，Dioxus都能作为一个强大且灵活的选择。</div>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/340/</link>
<title><![CDATA[Go实现多线程分片下载文件]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Mon, 21 Oct 2024 08:39:22 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/340/</guid> 
<description>
<![CDATA[ 
	<p>&nbsp;我们在下载大文件时，通常会使用多线程下载的方式来加快下载速度。例如常用的多线程下载工具（Gopeed、Aria2、XDM等等），都是通过多线程下载技术充分利用了网络带宽，以提高下载速度。</p><div><div><p>那么多线程下载是怎么实现的呢？多个线程发送网络请求，是怎么做到同时下载一个文件呢？事实上，借助HTTP协议中的一些机制就可以实现了！</p><p>今天我们就通过使用Go语言为例，从了解HTTP请求相关的一些机制开始，实现一个多线程下载的示例。</p><h2 data-id="heading-0">1，多线程下载原理</h2><p>事实上，多线程下载的原理很简单，主要的步骤如下：</p><ul><li>获取待下载文件大小</li><li>每个线程下载文件的一部分</li><li>全部下载完成后，拼接为完整文件</li></ul><p>实现这些步骤，就涉及到HTTP协议的下列相关机制。</p><h3 data-id="heading-1">(1) <code>HEAD</code>请求 - 只获取请求头</h3><p>我们通常发送HTTP请求大多数是<code>GET</code>或者<code>POST</code>类型，发送请求后我们会立即获取响应体，浏览器则会根据响应体的类型来处理内容，例如返回的是<code>text/html</code>就会作为网页显示，返回<code>image/png</code>就会解码为图片等等，响应体的类型由响应头<code>Content-Type</code>标识。当我们下载文件时，事实上也是发送HTTP请求，只不过<strong>服务器返回的响应体就是文件本身</strong>了！其类型则是<code>application/octet-stream</code>，浏览器也知道这是个文件需要下载。</p><p>当然，文件作为响应体通常比起网页、图片要大得多，在多线程下载时，<strong>我们就要先获取文件的大小，而不是立即获取文件本身</strong>，这时我们就可以向服务器发起<code>HEAD</code>请求而不是<code>GET</code>请求。</p><p>服务器收到<code>HEAD</code>请求后，就<strong>只会返回对应的响应头，而不会返回响应体</strong>，这样我们就可以在下载文件之前，读取响应头中的<code>Content-Length</code>来先获取待下载文件大小。</p><h3 data-id="heading-2">(2) <code>Range</code>请求头 - 只获取部分响应体</h3><p>知道了文件大小，我们就需要让每个线程只下载一部分文件，借助HTTP的<code>Range</code>请求头，就可以实现只让服务端返回响应体内容的一部分，而不是返回完整的响应体。</p><p>这里我们先来借助书籍《图解HTTP》中对<code>Range</code>请求头的讲解，来学习一下：</p></div><p><img src="/attachment/2024/10/image/2024-10-21_163241.png" width="610" height="946" alt="" /></p><div class="codeText"><div class="codeHead">XML/HTML代码</div><ol start="1" class="dp-xml"><li class="alt"><span><span>Range:&nbsp;</span><span class="attribute">bytes</span><span>=</span><span class="attribute-value">5001</span><span>-10000&nbsp;&nbsp;</span></span></li></ol></div><div><div><p>那么服务端就只会返回响应体的第<code>5001</code>到第<code>10000</code>字节的内容部分，包含第<code>5001</code>和第<code>10000</code>字节，<code>0</code>表示响应体的第一个字节。</p><p>这样，在多个线程同时下载文件时，我们在每个线程的请求中使用<code>Range</code>请求头，就可以实现一个线程只下载文件的一部分了！</p><h3 data-id="heading-3">(3) 为什么多线程下载可以提升速度？</h3><p>事实上，在我们客户端（下载文件的）和服务端双向网络通信情况都很好的情况下，使用单线程和多线程下载的速度是几乎没有差异的，也就是说能够跑满我们客户端的全部带宽，那么这种情况下我们使用单线程下载反而更能够节省硬件和网络资源。</p><p>但是在我们客户端和服务端之间网络波动较大的情况下，例如我们国内从Github下载文件的时候，就会发现多线程下载速度比单线程快得多，反之使用单线程完全无法充分利用我们的网络带宽。</p><p>这种现象事实上是因为TCP连接的<strong>慢启动机制</strong>导致的，众所周知HTTP是基于TCP的协议，每次我们建立HTTP连接时，包括下载文件，都是在传输层基于TCP协议进行传输。<strong>TCP慢启动机制</strong>是TCP 协议中一种拥塞控制的机制，目的是在开始数据传输时逐步探测网络的容量，避免瞬间发送大量数据而导致网络拥塞。慢启动不是字面意义上的&ldquo;慢&rdquo;，而是相对于立即使用最大带宽而言，它会逐渐增加传输速率。</p><p>慢启动机制的过程简要概括如下：</p><ul><li><strong>一开始建立连接</strong>：当一个新的TCP连接建立后，发送方并不知道当前网络的拥塞情况。因此，发送方不会马上发送大量数据，而是会使用<strong>慢启动机制</strong>来逐步增加数据传输的速率，在TCP中使用阻塞窗口<code>cwnd</code>来限制发送的数据量，也就是说一开始<code>cwnd</code>是非常小的</li><li><strong>拥塞窗口增长</strong>：在建立连接后，每当接收到一个确认<code>ACK</code>包时，<code>cwnd</code>会<strong>指数级增长</strong>，直到达到网络的带宽限制或者某个拥塞控制的阈值（称为慢启动阈值<code>ssthresh</code>），这个过程会一直持续，直到发送方探测到网络出现了拥塞（比如丢包或者确认延迟变长），或者<code>cwnd</code>达到了某个预定义的慢启动阈值<code>ssthresh</code></li><li><strong>慢启动的终止</strong>：慢启动机制会在以下情况终止：<ul><li><strong>达到慢启动阈值<code>ssthresh</code></strong>：当拥塞窗口<code>cwnd</code>增长到慢启动阈值<code>ssthresh</code>时，慢启动机制停止，此时TCP会进入另一种拥塞控制机制，称为<strong>拥塞避免</strong>，这时<code>cwnd</code>增长变为线性而非指数级</li><li><strong>发生拥塞（如丢包或超时）</strong>：如果发送方检测到数据包丢失（例如没有收到确认），它会认为网络已经出现拥塞，此时<code>ssthresh</code>会被调整为当前<code>cwnd</code>的一半，然后<code>cwnd</code>会重置为<code>1 MSS</code>，重新进入慢启动阶段</li></ul></li></ul><p>可见TCP连接使用<code>cwnd</code>限制两者发送的数据量的大小，并逐步&ldquo;试探&rdquo;两者传输数据速率的上限并增加传输的数据量。</p><p>在我们下载文件时，事实上是服务端在向我们发送文件，如果网络波动较大、不稳定，TCP连接机会一直将<code>cwnd</code>限制在一个较小的值，在单位时间内，服务端也无法向我们发送更大的数据量。</p><p>此时，如果我们使用多线程下载，和服务端建立多个TCP连接，这样即使每个TCP连接的<code>cwnd</code>较小，所有TCP连接加起来传输的数据量仍然可以占满我们的带宽。</p><h2 data-id="heading-4">2，Go代码实现</h2><p>知道了HTTP的上述几个机制，相信大家就知道如何实现一个简单的多线程下载了！我们可以总结主要步骤如下：</p><ul><li>发送<code>HEAD</code>类型请求，通过<code>Content-Length</code>请求头获取待下载文件大小</li><li>根据给定的线程数量，结合待下载文件大小，确定每个线程下载的范围部分，也就是每个线程的<code>Range</code>请求头字节范围</li><li>启动所有线程，使得每个线程下载它们对应的部分文件，并等待全部线程下载完成</li><li>合并每个线程下载的部分为最终文件</li><li>清理每个线程下载的文件部分</li></ul><p>这里分别设计下列类（结构体），用于存放多线程下载时的传入参数和状态量：</p></div><div><img src="/attachment/2024/10/image/2024-10-21_163453.png" alt="" /></div><div>&nbsp;</div><div><div><p>上述<code>ShardTask</code>类表示<strong>一个线程的下载任务</strong>，其中会完成一个分片（文件的一部分）的下载请求操作，它有如下作为参数的属性：</p><ul><li><code>Url</code> 下载的文件地址</li><li><code>Order</code> 分片序号</li><li><code>ShardFilePath</code> 这个分片文件的保存路径</li><li><code>RangeStart</code>和<code>RangeEnd</code> 下载的文件起始范围和结束范围，用于设定<code>Range</code>请求头</li></ul><p>此外，还有作为下载状态的属性：</p><ul><li><code>DownloadSize</code> 下载任务进行时，这个线程已下载的文件部分大小</li><li><code>TaskDone</code> 这个线程的下载任务是否完成</li></ul><p>该类的成员方法如下：</p><ul><li><code>DoShardGet</code> 执行分片下载任务，在其中会根据<code>RangeStart</code>和<code>RangeEnd</code>设定对应的HTTP请求头，发送请求并下载对应的文件部分</li></ul><p>然后就是<code>ParallelGetTask</code>类，表示<strong>一整个多线程下载任务</strong>，其中包含了一个多线程下载任务的参数和状态量，并且实现了多线程下载的每个步骤，它有如下作为参数的属性：</p><ul><li><code>Url</code> 文件的下载链接</li><li><code>FilePath</code> 文件下载完成后的保存位置</li><li><code>Concurrent</code> 下载并发数，即同时下载的分片数量</li><li><code>TempFolder</code> 临时分片文件的保存文件夹</li></ul><p>此外还有作为状态的属性：</p><ul><li><code>TotalSize</code> 待下载文件的总大小</li><li><code>ShardTaskList</code> 存储所有分片任务对象指针的列表</li></ul><p>该类中的方法主要是分片下载的一些步骤如下：</p><ul><li><code>getLength</code> 发送<code>HEAD</code>请求获取<code>Content-Length</code>以获取文件大小，获取后将其设定到<code>TotalSize</code>属性</li><li><code>allocateTask</code> 根据给定的线程数和获取到的文件大小，计算每个线程下载的文件内容范围，并创建对应的<code>ShardTask</code>结构体放入<code>ShardTaskList</code>中</li><li><code>downloadShard</code> 为每一个<code>ShardTask</code>对象创建一个线程（Goroutine）并在新的线程中调用<code>ShardTask</code>对象的下载分片方法，以启动所有线程的下载任务，并通过<code>sync.WaitGroup</code>来等待全部线程完成</li><li><code>mergeFile</code> 下载完成后，合并每个分片为最终文件</li><li><code>cleanShard</code> 合并完成后，清理下载的每个分片文件</li><li><code>printTotalProcess</code> 这是一个附加的辅助方法，用于实时输出下载进度</li><li><code>Run</code> 启动整个多线程下载任务，该函数是暴露的公开函数，其中对上述每个步骤函数进行了组织，按顺序调用执行</li></ul><p>下面，我们来看一下它们的代码实现。</p><h3 data-id="heading-5">(1) <code>ShardTask</code> - 一个线程的下载任务</h3></div><div class="codeText"><div class="codeHead">C#代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>package&nbsp;model&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>import&nbsp;(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;bufio&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;fmt&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;github.com/fatih/color&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;io&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;net/http&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;os&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;sync&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;全局HTTP客户端</span><span>&nbsp;&nbsp;</span></span></li><li><span>var&nbsp;httpClient&nbsp;=&nbsp;http.Client&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Transport:&nbsp;&amp;http.Transport&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;关闭keep-alive确保一个线程就使用一个TCP连接</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisableKeepAlives:&nbsp;<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;ShardTask&nbsp;单个分片下载任务的任务参数和状态量</span><span>&nbsp;&nbsp;</span></span></li><li><span>type&nbsp;ShardTask&nbsp;<span class="keyword">struct</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;下载链接</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Url&nbsp;<span class="keyword">string</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;分片序号，从1开始</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;<span class="keyword">int</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;这个分片文件的路径</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;ShardFilePath&nbsp;<span class="keyword">string</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;分片的起始范围（字节，包含）</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;RangeStart&nbsp;int64&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;分片的结束范围（字节，包含）</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;RangeEnd&nbsp;int64&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;已下载的部分（字节）</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;DownloadSize&nbsp;int64&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;该任务是否完成</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;TaskDone&nbsp;<span class="keyword">bool</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;NewShardTask&nbsp;构造函数</span><span>&nbsp;&nbsp;</span></span></li><li><span>func&nbsp;NewShardTask(url&nbsp;<span class="keyword">string</span><span>,&nbsp;order&nbsp;</span><span class="keyword">int</span><span>,&nbsp;shardFilePath&nbsp;</span><span class="keyword">string</span><span>,&nbsp;rangeStart&nbsp;int64,&nbsp;rangeEnd&nbsp;int64)&nbsp;*ShardTask&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&amp;ShardTask&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;设定任务参数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Order:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;order,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShardFilePath:&nbsp;shardFilePath,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RangeStart:&nbsp;&nbsp;&nbsp;&nbsp;rangeStart,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RangeEnd:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rangeEnd,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;初始化状态量</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DownloadSize:&nbsp;0,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TaskDone:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;DoShardGet&nbsp;开始下载这个分片（该方法在goroutine中执行）</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>func&nbsp;(task&nbsp;*ShardTask)&nbsp;DoShardGet(waitGroup&nbsp;*sync.WaitGroup)&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;创建文件</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;file,&nbsp;e&nbsp;:=&nbsp;os.OpenFile(task.ShardFilePath,&nbsp;os.O_CREATE&#124;os.O_WRONLY&#124;os.O_TRUNC,&nbsp;0755)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;任务%d创建文件失败！&quot;</span><span>,&nbsp;task.Order)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.HiRed(<span class="string">&quot;%s&quot;</span><span>,&nbsp;e)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;准备请求</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;request,&nbsp;e&nbsp;:=&nbsp;http.NewRequest(<span class="string">&quot;GET&quot;</span><span>,&nbsp;task.Url,&nbsp;nil)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;任务%d创建请求出错！&quot;</span><span>,&nbsp;task.Order)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.HiRed(<span class="string">&quot;%s&quot;</span><span>,&nbsp;e)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;设定请求头</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;request.Header.Set(<span class="string">&quot;Range&quot;</span><span>,&nbsp;fmt.Sprintf(</span><span class="string">&quot;bytes=%d-%d&quot;</span><span>,&nbsp;task.RangeStart,&nbsp;task.RangeEnd))&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;发送请求</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;response,&nbsp;e&nbsp;:=&nbsp;httpClient.Do(request)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;任务%d发送下载请求出错！&quot;</span><span>,&nbsp;task.Order)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.HiRed(<span class="string">&quot;%s&quot;</span><span>,&nbsp;e)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;读取请求体</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;:=&nbsp;response.Body&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;读取缓冲区</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;:=&nbsp;make([]<span class="keyword">byte</span><span>,&nbsp;8092)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;准备写入文件</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;writer&nbsp;:=&nbsp;bufio.NewWriter(file)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;读取一次内容至缓冲区</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readSize,&nbsp;readError&nbsp;:=&nbsp;body.Read(buffer)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;readError&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;如果读取完毕则退出循环</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;readError&nbsp;==&nbsp;io.EOF&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;<span class="keyword">else</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;任务%d读取响应错误！&quot;</span><span>,&nbsp;task.Order)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.HiRed(<span class="string">&quot;%s&quot;</span><span>,&nbsp;readError)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;把缓冲区内容追加至文件</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_,&nbsp;writeError&nbsp;:=&nbsp;writer.Write(buffer[0:readSize])&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;writeError&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;任务%d写入文件时出现错误！&quot;</span><span>,&nbsp;task.Order)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.HiRed(<span class="string">&quot;%s&quot;</span><span>,&nbsp;writeError)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;=&nbsp;writer.Flush()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;记录下载进度</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task.DownloadSize&nbsp;+=&nbsp;int64(readSize)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;关闭全部资源</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;=&nbsp;body.Close()&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;=&nbsp;file.Close()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;标记任务完成</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;task.TaskDone&nbsp;=&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;使线程组中计数器-1</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;waitGroup.Done()&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li></ol></div><div><div><p>构造函数<code>NewShardTask</code>负责完成<code>ShardTask</code>的参数传入和状态量初始化，而<code>DoShardGet</code>方法实现了下载一个文件分片的完整步骤，从创建文件准备写入，到设定请求头，发出请求，最后读取响应体保存到文件。</p><p>此外，可见这里的<code>http.Client</code>对象中，我们将其<code>DisableKeepAlives</code>设为了<code>true</code>即关闭<code>keep-alive</code>，这是因为<strong>默认情况下Go语言的HTTP客户端会复用TCP连接，即使你多个线程发起请求，也会使用一个TCP连接进行</strong>。</p><p>而多线程下载需要<strong>每个线程持有一个单独的TCP连接</strong>来达到突破<code>cwnd</code>的限制，因此这里关闭<code>keep-alive</code>实现每个线程发起请求时，使用单独的TCP连接。</p><h3 data-id="heading-6">(2) <code>ParallelGetTask</code> - 一整个多线程下载任务</h3></div><div class="codeText"><div class="codeHead">C#代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>package&nbsp;model&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>import&nbsp;(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;bufio&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;fmt&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;gitee.com/swsk33/shard-download-demo/util&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;github.com/fatih/color&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;io&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;net/http&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;os&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;path/filepath&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;strconv&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;sync&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;time&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;ParallelGetTask&nbsp;多线程下载任务类，存放一个多线程下载任务的参数和状态量</span><span>&nbsp;&nbsp;</span></span></li><li><span>type&nbsp;ParallelGetTask&nbsp;<span class="keyword">struct</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;文件的下载链接</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Url&nbsp;<span class="keyword">string</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;文件的最终保存位置</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;FilePath&nbsp;<span class="keyword">string</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;下载并发数</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Concurrent&nbsp;<span class="keyword">int</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;下载的分片临时文件保存文件夹</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;TempFolder&nbsp;<span class="keyword">string</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;下载文件的总大小</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;TotalSize&nbsp;int64&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;全部的下载分片任务参数列表</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;ShardTaskList&nbsp;[]*ShardTask&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;NewParallelGetTask&nbsp;构造函数</span><span>&nbsp;&nbsp;</span></span></li><li><span>func&nbsp;NewParallelGetTask(url&nbsp;<span class="keyword">string</span><span>,&nbsp;filePath&nbsp;</span><span class="keyword">string</span><span>,&nbsp;concurrent&nbsp;</span><span class="keyword">int</span><span>,&nbsp;tempFolder&nbsp;</span><span class="keyword">string</span><span>)&nbsp;*ParallelGetTask&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;&amp;ParallelGetTask&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;参数赋值</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilePath:&nbsp;&nbsp;&nbsp;filePath,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Concurrent:&nbsp;concurrent,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TempFolder:&nbsp;tempFolder,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;初始化状态量</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TotalSize:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShardTaskList:&nbsp;make([]*ShardTask,&nbsp;0),&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;发送HEAD请求获取待下载文件的大小</span><span>&nbsp;&nbsp;</span></span></li><li><span>func&nbsp;(task&nbsp;*ParallelGetTask)&nbsp;getLength()&nbsp;error&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;发送请求</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;response,&nbsp;e&nbsp;:=&nbsp;http.Head(task.Url)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;发送HEAD请求出错！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;e&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;读取并设定长度</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;task.TotalSize&nbsp;=&nbsp;response.ContentLength&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;nil&nbsp;&nbsp;</span></span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;根据待下载文件的大小和设定的并发数，创建每个分片任务对象</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>func&nbsp;(task&nbsp;*ParallelGetTask)&nbsp;allocateTask()&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;如果并发数大于总大小，则进行调整</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;int64(task.Concurrent)&nbsp;&gt;&nbsp;task.TotalSize&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task.Concurrent&nbsp;=&nbsp;<span class="keyword">int</span><span>(task.TotalSize)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;开始计算每个分片的下载范围</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;eachSize&nbsp;:=&nbsp;task.TotalSize&nbsp;/&nbsp;int64(task.Concurrent)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;创建任务对象</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;i&nbsp;:=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;task.Concurrent;&nbsp;i++&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task.ShardTaskList&nbsp;=&nbsp;append(task.ShardTaskList,&nbsp;NewShardTask(task.Url,&nbsp;i+1,&nbsp;filepath.Join(task.TempFolder,&nbsp;strconv.Itoa(i+1)),&nbsp;int64(i)*eachSize,&nbsp;int64(i+1)*eachSize-1))&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;处理末尾部分</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;task.TotalSize%int64(task.Concurrent)&nbsp;!=&nbsp;0&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task.ShardTaskList[task.Concurrent-1].RangeEnd&nbsp;=&nbsp;task.TotalSize&nbsp;-&nbsp;1&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;根据任务列表进行多线程分片下载操作</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>func&nbsp;(task&nbsp;*ParallelGetTask)&nbsp;downloadShard()&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;创建线程组</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;waitGroup&nbsp;:=&nbsp;&amp;sync.WaitGroup&#123;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;开始执行全部分片下载线程</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;_,&nbsp;task&nbsp;:=&nbsp;range&nbsp;task.ShardTaskList&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;go&nbsp;task.DoShardGet(waitGroup)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waitGroup.Add(1)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;等待全部下载完成</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;waitGroup.Wait()&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;下载完成后，合并分片文件</span><span>&nbsp;&nbsp;</span></span></li><li><span>func&nbsp;(task&nbsp;*ParallelGetTask)&nbsp;mergeFile()&nbsp;error&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;创建目的文件</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;targetFile,&nbsp;e&nbsp;:=&nbsp;os.OpenFile(task.FilePath,&nbsp;os.O_CREATE&#124;os.O_WRONLY&#124;os.O_APPEND,&nbsp;0755)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;创建目标文件出错！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;e&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;创建写入器</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;writer&nbsp;:=&nbsp;bufio.NewWriter(targetFile)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;准备读取每个分片文件</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;_,&nbsp;shard&nbsp;:=&nbsp;range&nbsp;task.ShardTaskList&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shardFile,&nbsp;e&nbsp;:=&nbsp;os.OpenFile(shard.ShardFilePath,&nbsp;os.O_RDONLY,&nbsp;0755)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;读取分片文件出错！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;e&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader&nbsp;:=&nbsp;bufio.NewReader(shardFile)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readBuffer&nbsp;:=&nbsp;make([]<span class="keyword">byte</span><span>,&nbsp;1024*1024)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;读取每个分片文件，一次读取1KB</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readSize,&nbsp;readError&nbsp;:=&nbsp;reader.Read(readBuffer)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;处理结束或错误</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;readError&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;readError&nbsp;==&nbsp;io.EOF&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;<span class="keyword">else</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;读取分片文件出错！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;readError&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;写入到最终合并的文件</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_,&nbsp;writeError&nbsp;:=&nbsp;writer.Write(readBuffer[0:readSize])&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;writeError&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;写入合并文件出错！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;writeError&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;=&nbsp;writer.Flush()&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;关闭分片文件资源</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;=&nbsp;shardFile.Close()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;关闭目的文件资源</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;=&nbsp;targetFile.Close()&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;nil&nbsp;&nbsp;</span></span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;删除分片临时文件</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>func&nbsp;(task&nbsp;*ParallelGetTask)&nbsp;cleanShard()&nbsp;error&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;_,&nbsp;shard&nbsp;:=&nbsp;range&nbsp;task.ShardTaskList&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e&nbsp;:=&nbsp;os.Remove(shard.ShardFilePath)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;删除分片临时文件%s出错！&quot;</span><span>,&nbsp;shard.ShardFilePath)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;e&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;nil&nbsp;&nbsp;</span></span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;在一个新线程中，实时输出每个分片的下载进度和总进度</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>func&nbsp;(task&nbsp;*ParallelGetTask)&nbsp;printTotalProcess()&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;go&nbsp;func()&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;上一次统计时的已下载大小，用于计算速度</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;lastDownloadSize&nbsp;int64&nbsp;=&nbsp;0&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;如果全部任务完成则结束输出，并统计并发数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allDone&nbsp;:=&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;当前并发数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentTaskCount&nbsp;:=&nbsp;0&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;_,&nbsp;shardTask&nbsp;:=&nbsp;range&nbsp;task.ShardTaskList&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;!shardTask.TaskDone&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allDone&nbsp;=&nbsp;<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentTaskCount&nbsp;+=&nbsp;1&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;allDone&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;统计所有分片已下载大小之和</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;totalDownloadSize&nbsp;int64&nbsp;=&nbsp;0&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;_,&nbsp;shardTask&nbsp;:=&nbsp;range&nbsp;task.ShardTaskList&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalDownloadSize&nbsp;+=&nbsp;shardTask.DownloadSize&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;计算速度</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentDownload&nbsp;:=&nbsp;totalDownloadSize&nbsp;-&nbsp;lastDownloadSize&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastDownloadSize&nbsp;=&nbsp;totalDownloadSize&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speedString&nbsp;:=&nbsp;util.ComputeSpeed(currentDownload,&nbsp;300)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;输出到控制台</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmt.Printf(<span class="string">&quot;&#92;r当前并发数：%3d&nbsp;速度：%s&nbsp;总进度：%3.2f%%&quot;</span><span>,&nbsp;currentTaskCount,&nbsp;speedString,&nbsp;float32(totalDownloadSize)/float32(task.TotalSize)*100)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;等待300ms</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.Sleep(300&nbsp;*&nbsp;time.Millisecond)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;()&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;Run&nbsp;开始执行整个分片多线程下载任务</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>func&nbsp;(task&nbsp;*ParallelGetTask)&nbsp;Run()&nbsp;error&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;获取文件大小</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;e&nbsp;:=&nbsp;task.getLength()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;%s&quot;</span><span>,&nbsp;e)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;e&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;color.HiYellow(<span class="string">&quot;已获取到下载文件大小：%d字节&quot;</span><span>,&nbsp;task.TotalSize)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;分配任务</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;task.allocateTask()&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;color.HiYellow(<span class="string">&quot;已完成分片任务分配，共计%d个任务&quot;</span><span>,&nbsp;len(task.ShardTaskList))&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;开启进度输出</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;task.printTotalProcess()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;开始下载分片</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;task.downloadShard()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;color.HiYellow(<span class="string">&quot;&#92;n所有分片已下载完成！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;开始合并文件</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;e&nbsp;=&nbsp;task.mergeFile()&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;%s&quot;</span><span>,&nbsp;e)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;e&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;color.HiYellow(<span class="string">&quot;合并分片完成！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;清理临时分片文件</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;e&nbsp;=&nbsp;task.cleanShard()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;e&nbsp;!=&nbsp;nil&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color.Red(<span class="string">&quot;%s&quot;</span><span>,&nbsp;e)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;e&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;color.HiYellow(<span class="string">&quot;清理分片临时文件完成！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;color.Green(<span class="string">&quot;分片下载任务完成！&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;nil&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li></ol></div><p><span style="color: rgb(37, 41, 51); font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial; font-size: 16px;">上述</span><code style="font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 0.87em; word-break: break-word; border-radius: 2px; overflow-x: auto; background-color: rgb(255, 245, 245); color: rgb(255, 80, 44); padding: 0.065em 0.4em;">printTotalProcess</code><span style="color: rgb(37, 41, 51); font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial; font-size: 16px;">函数中，</span><code style="font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 0.87em; word-break: break-word; border-radius: 2px; overflow-x: auto; background-color: rgb(255, 245, 245); color: rgb(255, 80, 44); padding: 0.065em 0.4em;">util.ComputeSpeed</code><span style="color: rgb(37, 41, 51); font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial; font-size: 16px;">函数用于计算下载速度并自动转换为可读单位，代码如下：</span></p><div class="codeText"><div class="codeHead">C#代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>package&nbsp;util&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>import&nbsp;(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;fmt&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;math&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;关于单位的实用工具函数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;ComputeSpeed&nbsp;计算网络速度</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">//&nbsp;size&nbsp;一段时间内下载的数据大小，单位字节</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">//&nbsp;timeElapsed&nbsp;经过的时间长度，单位毫秒</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">//&nbsp;返回计算得到的网速，会自动换算单位</span><span>&nbsp;&nbsp;</span></span></li><li><span>func&nbsp;ComputeSpeed(size&nbsp;int64,&nbsp;timeElapsed&nbsp;<span class="keyword">int</span><span>)&nbsp;</span><span class="keyword">string</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;bytePerSecond&nbsp;:=&nbsp;size&nbsp;/&nbsp;int64(timeElapsed)&nbsp;*&nbsp;1000&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;0&nbsp;&lt;=&nbsp;bytePerSecond&nbsp;&amp;&amp;&nbsp;bytePerSecond&nbsp;&lt;=&nbsp;1024&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;fmt.Sprintf(</span><span class="string">&quot;%4d&nbsp;Byte/s&quot;</span><span>,&nbsp;bytePerSecond)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;bytePerSecond&nbsp;&gt;&nbsp;1024&nbsp;&amp;&amp;&nbsp;bytePerSecond&nbsp;&lt;=&nbsp;int64(math.Pow(1024,&nbsp;2))&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;fmt.Sprintf(</span><span class="string">&quot;%6.2f&nbsp;KB/s&quot;</span><span>,&nbsp;float64(bytePerSecond)/1024)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;bytePerSecond&nbsp;&gt;&nbsp;1024*1024&nbsp;&amp;&amp;&nbsp;bytePerSecond&nbsp;&lt;=&nbsp;int64(math.Pow(1024,&nbsp;3))&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;fmt.Sprintf(</span><span class="string">&quot;%6.2f&nbsp;MB/s&quot;</span><span>,&nbsp;float64(bytePerSecond)/math.Pow(1024,&nbsp;2))&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;fmt.Sprintf(</span><span class="string">&quot;%6.2f&nbsp;GB/s&quot;</span><span>,&nbsp;float64(bytePerSecond)/math.Pow(1024,&nbsp;3))&nbsp;&nbsp;</span></span></li><li><span>&#125;&nbsp;&nbsp;</span></li></ol></div><p>&nbsp;</p><div><div><p>可见通过构造函数<code>NewParallelGetTask</code>完成参数传递和状态量设定后，其它每个私有函数都对应我们多线程下载中的一个步骤，最后由公开函数<code>Run</code>统筹组织起所有的步骤，完成整个多线程下载任务。</p><h2 data-id="heading-7">3，实现效果</h2><p>现在我们在<code>main</code>函数中创建一个<code>ParallelGetTask</code>对象，设定好参数后调用其<code>Run</code>方法即可开始多线程下载文件的任务：</p></div><div class="codeText"><div class="codeHead">C#代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>package&nbsp;main&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>import&nbsp;(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;gitee.com/swsk33/shard-download-demo/model&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>func&nbsp;main()&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;创建任务</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;task&nbsp;:=&nbsp;model.NewParallelGetTask(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;https://github.com/jgraph/drawio-desktop/releases/download/v24.7.17/draw.io-24.7.17-windows-installer.exe&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;C:&#92;&#92;Users&#92;&#92;swsk33&#92;&#92;Downloads&#92;&#92;draw.io.exe&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;64,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;C:&#92;&#92;Users&#92;&#92;swsk33&#92;&#92;Downloads&#92;&#92;temp&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;执行任务</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;=&nbsp;task.Run()&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li></ol></div><div>&nbsp;</div></div></div></div></div></div>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/332/</link>
<title><![CDATA[MD5 加密之 java 与 js 实现]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Tue, 09 Jan 2024 08:45:10 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/332/</guid> 
<description>
<![CDATA[ 
	<p><span style="color: rgb(79, 79, 79); font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; font-size: 16px; text-align: justify;">MD5 加密算法实际是一种信息摘要算法，其加密不可逆向解密；</span></p><p style="box-sizing: border-box; margin-bottom: 16px; direction: ltr; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; font-size: 16px; line-height: 26px; text-rendering: optimizelegibility; color: rgb(79, 79, 79); text-align: justify;">其一般用作数据签名，来确保信息传输的完整性与安全性；</p><ul style="box-sizing: border-box; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; direction: ltr; font-size: 1.1em; line-height: 1.6; list-style-position: outside; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; color: rgb(34, 34, 34);"><li style="box-sizing: border-box; margin: 8px 0px 0px 32px; padding: 0px; direction: ltr; list-style-type: disc;">完整性：传输数据完整未丢失</li><li style="box-sizing: border-box; margin: 8px 0px 0px 32px; padding: 0px; direction: ltr; list-style-type: disc;">安全性：数据未被恶意篡改</li></ul><h3 style="box-sizing: border-box; margin: 8px 0px 16px; padding: 0px; direction: ltr; font-family: oswaldbook, sans-serif; color: rgb(79, 79, 79); text-rendering: optimizelegibility; line-height: 30px; font-size: 22px;">一、java 实现 MD5 加密</h3><div class="codeText"><div class="codeHead">Java代码</div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> MD5Util &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span> </span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * 对字符串md5加密</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; *</span> </span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * @param str 传入要加密的字符串</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * @return MD5加密后的字符串(小写+字母)</span> </span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; */</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span> </span><span class="keyword">static</span><span> String getMD5LowerCase(String str) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span> &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 生成一个MD5加密计算摘要</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageDigest md = MessageDigest.getInstance(<span class="string">&quot;MD5&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 计算md5函数</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;md.update(str.getBytes());&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// digest()最后确定返回md5 hash值，返回值为8为字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">new</span><span> BigInteger(</span><span class="number">1</span><span>, md.digest()).toString(</span><span class="number">16</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; <span class="keyword">catch</span><span> (Exception e) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">null</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * 对字符串md5加密</span> </span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; *</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * @param str 传入要加密的字符串</span> </span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * @return MD5加密后的字符串(大写+数字)</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; */</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span> </span><span class="keyword">static</span><span> String getMD5UpperCase(String s) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">char</span><span> hexDigits[] = &#123; </span><span class="string">'0'</span><span>, </span><span class="string">'1'</span><span>, </span><span class="string">'2'</span><span>, </span><span class="string">'3'</span><span>, </span><span class="string">'4'</span><span>, </span><span class="string">'5'</span><span>, </span><span class="string">'6'</span><span>, </span><span class="string">'7'</span><span>, </span><span class="string">'8'</span><span>, </span><span class="string">'9'</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'A'</span><span>, </span><span class="string">'B'</span><span>, </span><span class="string">'C'</span><span>, </span><span class="string">'D'</span><span>, </span><span class="string">'E'</span><span>, </span><span class="string">'F'</span><span> &#125;;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span> &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">byte</span><span>[] btInput = s.getBytes();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 获得MD5摘要算法的 MessageDigest 对象</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageDigest mdInst = MessageDigest.getInstance(<span class="string">&quot;MD5&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 使用指定的字节更新摘要</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mdInst.update(btInput);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 获得密文</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">byte</span><span>[] md = mdInst.digest();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 把密文转换成十六进制的字符串形式</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span> j = md.length;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">char</span><span> str[] = </span><span class="keyword">new</span><span> </span><span class="keyword">char</span><span>[j * </span><span class="number">2</span><span>];&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span> k = </span><span class="number">0</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span> (</span><span class="keyword">int</span><span> i = </span><span class="number">0</span><span>; i &lt; j; i++) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">byte</span><span> byte0 = md[i];&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str[k++] = hexDigits[byte0 &gt;&gt;&gt; <span class="number">4</span><span> &amp; </span><span class="number">0xf</span><span>];&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str[k++] = hexDigits[byte0 &amp; <span class="number">0xf</span><span>];&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">new</span><span> String(str);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; <span class="keyword">catch</span><span> (Exception e) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">null</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String str = <span class="string">&quot;&#92;&quot;我+Admin1234~！@#￥%&hellip;&hellip;&amp;*（）&#92;&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&quot;我+Admin1234~！@#￥%&hellip;&hellip;&amp;*（）&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String s1 = getMD5LowerCase(str);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s1);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//6bb6f83c026357a15cdf12e5d6b2b310</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String s2 = getMD5UpperCase(str);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s2);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//6BB6F83C026357A15CDF12E5D6B2B310</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li></ol></div><h3 style="box-sizing: border-box; margin: 8px 0px 16px; padding: 0px; direction: ltr; text-rendering: optimizelegibility; line-height: 30px;"><font color="#4f4f4f" face="oswaldbook, sans-serif"><span style="font-size: 22px;">测试</span></font></h3><h3 style="box-sizing: border-box; margin: 8px 0px 16px; padding: 0px; direction: ltr; text-rendering: optimizelegibility; line-height: 30px;"><font color="#4f4f4f" face="oswaldbook, sans-serif"><span style="font-size: 22px;">db06c78d1e24cf708a14ce81c9b617ec</span></font></h3><h3 style="box-sizing: border-box; margin: 8px 0px 16px; padding: 0px; direction: ltr; text-rendering: optimizelegibility; line-height: 30px;"><font color="#4f4f4f" face="oswaldbook, sans-serif"><span style="font-size: 22px;">DB06C78D1E24CF708A14CE81C9B617EC</span></font></h3><h3 style="box-sizing: border-box; margin: 8px 0px 16px; padding: 0px; direction: ltr; font-family: oswaldbook, sans-serif; color: rgb(79, 79, 79); text-rendering: optimizelegibility; line-height: 30px; font-size: 22px;"><img src="/attachment/2024/01/image/799.png" width="492" height="226" alt="" /></h3><h3 style="box-sizing: border-box; margin: 8px 0px 16px; padding: 0px; direction: ltr; font-family: oswaldbook, sans-serif; color: rgb(79, 79, 79); text-rendering: optimizelegibility; line-height: 30px; font-size: 22px;">二、js 实现 MD5 加密</h3><p style="box-sizing: border-box; margin-bottom: 16px; direction: ltr; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; font-size: 16px; line-height: 26px; text-rendering: optimizelegibility; color: rgb(79, 79, 79); text-align: justify;">使用第三方库 crypto-js，示例代码如下：</p><div class="codeText"><div class="codeHead">XML/HTML代码</div><ol start="1" class="dp-xml"><li class="alt"><span><span>&lt;!DOCTYPE html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">html</span><span> </span><span class="attribute">lang</span><span>=</span><span class="attribute-value">&quot;zh-CN&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">charset</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>111</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">style</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/css&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&#123;background:#2C91AE;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">style</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;http://172.16.102.156/public/crypto/crypto-js.min.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comments">&lt;!-- 中国文书网MD5加密封装方法调用 --&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span> </span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;md5.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>/*** 刘新修本地md5加密方法封装(大写) ***/&nbsp;&nbsp;</span></li><li class="alt"><span>// function md5(string) &#123;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function rotateLeft(lValue, iShiftBits) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (lValue <span class="tag">&lt;</span><span class="tag">&lt;</span><span> </span><span class="tag-name">iShiftBits</span><span>) &#124; (lValue </span><span class="tag">&gt;</span><span class="tag">&gt;</span><span class="tag">&gt;</span><span> (32 - iShiftBits));&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; function addUnsigned(lX, lY) &#123;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var lX4, lY4, lX8, lY8, lResult;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lX8</span><span> = (lX &amp; 0x80000000);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lY8</span><span> = (lY &amp; 0x80000000);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lX4</span><span> = (lX &amp; 0x40000000);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lY4</span><span> = (lY &amp; 0x40000000);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lResult</span><span> = (lX &amp; 0x3FFFFFFF) + (lY &amp; 0x3FFFFFFF);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (lX4 &amp; lY4) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (lResult ^ 0x80000000 ^ lX8 ^ lY8);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (lX4 &#124; lY4) &#123;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (lResult &amp; 0x40000000) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125; else &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (lResult ^ 0x40000000 ^ lX8 ^ lY8);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125; else &#123;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (lResult ^ lX8 ^ lY8);&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function f(x, y, z) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (x &amp; y) &#124; ((~x) &amp; z);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function g(x, y, z) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (x &amp; z) &#124; (y &amp; (~z));&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function h(x, y, z) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (x ^ y ^ z);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function i(x, y, z) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (y ^ (x &#124; (~z)));&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function FF(a, b, c, d, x, s, ac) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(a, addUnsigned(addUnsigned(f(b, c, d), x), ac));&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return addUnsigned(rotateLeft(a, s), b);&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; function GG(a, b, c, d, x, s, ac) &#123;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(a, addUnsigned(addUnsigned(g(b, c, d), x), ac));&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return addUnsigned(rotateLeft(a, s), b);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function HH(a, b, c, d, x, s, ac) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(a, addUnsigned(addUnsigned(h(b, c, d), x), ac));&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return addUnsigned(rotateLeft(a, s), b);&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; function II(a, b, c, d, x, s, ac) &#123;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(a, addUnsigned(addUnsigned(i(b, c, d), x), ac));&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return addUnsigned(rotateLeft(a, s), b);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function convertToWordArray(string) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var lWordCount;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">lMessageLength</span><span> = </span><span class="attribute-value">string</span><span>.length;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">lNumberOfWords_temp1</span><span> = </span><span class="attribute-value">lMessageLength</span><span> + 8;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">lNumberOfWords_temp2</span><span> = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">lNumberOfWords</span><span> = (lNumberOfWords_temp2 + 1) * 16;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">lWordArray</span><span> = </span><span class="attribute-value">new</span><span> Array(lNumberOfWords - 1);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">lBytePosition</span><span> = </span><span class="attribute-value">0</span><span>;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">lByteCount</span><span> = </span><span class="attribute-value">0</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (lByteCount <span class="tag">&lt;</span><span> </span><span class="tag-name">lMessageLength</span><span>) &#123;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lWordCount</span><span> = (lByteCount - (lByteCount % 4)) / 4;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lBytePosition</span><span> = (lByteCount % 4) * 8;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lWordArray[lWordCount] = (lWordArray[lWordCount] &#124; (string.charCodeAt(lByteCount) <span class="tag">&lt;</span><span class="tag">&lt;</span><span> </span><span class="tag-name">lBytePosition</span><span>));&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lByteCount++;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lWordCount</span><span> = (lByteCount - (lByteCount % 4)) / 4;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lBytePosition</span><span> = (lByteCount % 4) * 8;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lWordArray[lWordCount] = lWordArray[lWordCount] &#124; (0x80 <span class="tag">&lt;</span><span class="tag">&lt;</span><span> </span><span class="tag-name">lBytePosition</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lWordArray[lNumberOfWords - 2] = lMessageLength <span class="tag">&lt;</span><span class="tag">&lt;</span><span> </span><span class="tag-name">3</span><span>;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lWordArray[lNumberOfWords - 1] = lMessageLength <span class="tag">&gt;</span><span class="tag">&gt;</span><span class="tag">&gt;</span><span> 29;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return lWordArray;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function wordToHex(lValue) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">WordToHexValue</span><span> = </span><span class="attribute-value">&quot;&quot;</span><span>, </span><span class="attribute">WordToHexValue_temp</span><span> = </span><span class="attribute-value">&quot;&quot;</span><span>, lByte, lCount;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (<span class="attribute">lCount</span><span> = </span><span class="attribute-value">0</span><span>; lCount </span><span class="tag">&lt;</span><span>= 3; lCount++) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">lByte</span><span> = (lValue </span><span class="tag">&gt;</span><span class="tag">&gt;</span><span class="tag">&gt;</span><span> (lCount * 8)) &amp; 255;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">WordToHexValue_temp</span><span> = </span><span class="attribute-value">&quot;0&quot;</span><span> + lByte.toString(16);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">WordToHexValue</span><span class="attribute-value">WordToHexValue</span><span> = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return WordToHexValue;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; function utf8Encode(string) &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">string</span><span class="attribute-value">string</span><span> = string.replace(/&#92;r&#92;n/g, &quot;&#92;n&quot;);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">utftext</span><span> = </span><span class="attribute-value">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var <span class="attribute">n</span><span> = </span><span class="attribute-value">0</span><span>; n </span><span class="tag">&lt;</span><span> </span><span class="tag-name">string.length</span><span>; n++) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">c</span><span> = </span><span class="attribute-value">string</span><span>.charCodeAt(n);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (c <span class="tag">&lt;</span><span> </span><span class="tag-name">128</span><span>) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; utftext += String.fromCharCode(c);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if ((c <span class="tag">&gt;</span><span> 127) &amp;&amp; (c </span><span class="tag">&lt;</span><span> </span><span class="tag-name">2048</span><span>)) &#123;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; utftext += String.fromCharCode((c <span class="tag">&gt;</span><span class="tag">&gt;</span><span> 6) &#124; 192);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; utftext += String.fromCharCode((c &amp; 63) &#124; 128);&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else &#123;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; utftext += String.fromCharCode((c <span class="tag">&gt;</span><span class="tag">&gt;</span><span> 12) &#124; 224);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; utftext += String.fromCharCode(((c <span class="tag">&gt;</span><span class="tag">&gt;</span><span> 6) &amp; 63) &#124; 128);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; utftext += String.fromCharCode((c &amp; 63) &#124; 128);&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return utftext;&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">x</span><span> = [],&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k, AA, BB, CC, DD, a, b, c, d,&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">S11</span><span> = </span><span class="attribute-value">7</span><span>, </span><span class="attribute">S12</span><span> = 12, </span><span class="attribute">S13</span><span> = </span><span class="attribute-value">17</span><span>, </span><span class="attribute">S14</span><span> = </span><span class="attribute-value">22</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">S21</span><span> = </span><span class="attribute-value">5</span><span>, </span><span class="attribute">S22</span><span> = </span><span class="attribute-value">9</span><span> , </span><span class="attribute">S23</span><span> = </span><span class="attribute-value">14</span><span>, </span><span class="attribute">S24</span><span> = </span><span class="attribute-value">20</span><span>,&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">S31</span><span> = </span><span class="attribute-value">4</span><span>, </span><span class="attribute">S32</span><span> = </span><span class="attribute-value">11</span><span>, </span><span class="attribute">S33</span><span> = </span><span class="attribute-value">16</span><span>, </span><span class="attribute">S34</span><span> = </span><span class="attribute-value">23</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">S41</span><span> = </span><span class="attribute-value">6</span><span>, </span><span class="attribute">S42</span><span> = </span><span class="attribute-value">10</span><span>, </span><span class="attribute">S43</span><span> = </span><span class="attribute-value">15</span><span>, </span><span class="attribute">S44</span><span> = </span><span class="attribute-value">21</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">string</span><span> = </span><span class="attribute-value">utf8Encode</span><span>(string);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">x</span><span> = </span><span class="attribute-value">convertToWordArray</span><span>(string);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; // console.log(JSON.stringify(x))&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; // console.log(x.length)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">0x67452301</span><span>;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">0xEFCDAB89</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">0x98BADCFE</span><span>;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">0x10325476</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; for (<span class="attribute">k</span><span> = </span><span class="attribute-value">0</span><span>; k </span><span class="tag">&lt;</span><span> </span><span class="tag-name">x.length</span><span>; k += 16) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">AA</span><span> = </span><span class="attribute-value">a</span><span>;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">BB</span><span> = </span><span class="attribute-value">b</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">CC</span><span> = </span><span class="attribute-value">c</span><span>;&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">DD</span><span> = </span><span class="attribute-value">d</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">FF</span><span>(a, b, c, d, x[k + 0], S11, 0xD76AA478);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">FF</span><span>(d, a, b, c, x[k + 1], S12, 0xE8C7B756);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">FF</span><span>(c, d, a, b, x[k + 2], S13, 0x242070DB);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">FF</span><span>(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">FF</span><span>(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">FF</span><span>(d, a, b, c, x[k + 5], S12, 0x4787C62A);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">FF</span><span>(c, d, a, b, x[k + 6], S13, 0xA8304613);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">FF</span><span>(b, c, d, a, x[k + 7], S14, 0xFD469501);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">FF</span><span>(a, b, c, d, x[k + 8], S11, 0x698098D8);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">FF</span><span>(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">FF</span><span>(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">FF</span><span>(b, c, d, a, x[k + 11], S14, 0x895CD7BE);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">FF</span><span>(a, b, c, d, x[k + 12], S11, 0x6B901122);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">FF</span><span>(d, a, b, c, x[k + 13], S12, 0xFD987193);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">FF</span><span>(c, d, a, b, x[k + 14], S13, 0xA679438E);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">FF</span><span>(b, c, d, a, x[k + 15], S14, 0x49B40821);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">GG</span><span>(a, b, c, d, x[k + 1], S21, 0xF61E2562);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">GG</span><span>(d, a, b, c, x[k + 6], S22, 0xC040B340);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">GG</span><span>(c, d, a, b, x[k + 11], S23, 0x265E5A51);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">GG</span><span>(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">GG</span><span>(a, b, c, d, x[k + 5], S21, 0xD62F105D);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">GG</span><span>(d, a, b, c, x[k + 10], S22, 0x2441453);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">GG</span><span>(c, d, a, b, x[k + 15], S23, 0xD8A1E681);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">GG</span><span>(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">GG</span><span>(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">GG</span><span>(d, a, b, c, x[k + 14], S22, 0xC33707D6);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">GG</span><span>(c, d, a, b, x[k + 3], S23, 0xF4D50D87);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">GG</span><span>(b, c, d, a, x[k + 8], S24, 0x455A14ED);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">GG</span><span>(a, b, c, d, x[k + 13], S21, 0xA9E3E905);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">GG</span><span>(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">GG</span><span>(c, d, a, b, x[k + 7], S23, 0x676F02D9);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">GG</span><span>(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">HH</span><span>(a, b, c, d, x[k + 5], S31, 0xFFFA3942);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">HH</span><span>(d, a, b, c, x[k + 8], S32, 0x8771F681);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">HH</span><span>(c, d, a, b, x[k + 11], S33, 0x6D9D6122);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">HH</span><span>(b, c, d, a, x[k + 14], S34, 0xFDE5380C);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">HH</span><span>(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">HH</span><span>(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">HH</span><span>(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">HH</span><span>(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">HH</span><span>(a, b, c, d, x[k + 13], S31, 0x289B7EC6);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">HH</span><span>(d, a, b, c, x[k + 0], S32, 0xEAA127FA);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">HH</span><span>(c, d, a, b, x[k + 3], S33, 0xD4EF3085);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">HH</span><span>(b, c, d, a, x[k + 6], S34, 0x4881D05);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">HH</span><span>(a, b, c, d, x[k + 9], S31, 0xD9D4D039);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">HH</span><span>(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">HH</span><span>(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">HH</span><span>(b, c, d, a, x[k + 2], S34, 0xC4AC5665);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">II</span><span>(a, b, c, d, x[k + 0], S41, 0xF4292244);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">II</span><span>(d, a, b, c, x[k + 7], S42, 0x432AFF97);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">II</span><span>(c, d, a, b, x[k + 14], S43, 0xAB9423A7);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">II</span><span>(b, c, d, a, x[k + 5], S44, 0xFC93A039);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">II</span><span>(a, b, c, d, x[k + 12], S41, 0x655B59C3);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">II</span><span>(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">II</span><span>(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">II</span><span>(b, c, d, a, x[k + 1], S44, 0x85845DD1);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">II</span><span>(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">II</span><span>(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">II</span><span>(c, d, a, b, x[k + 6], S43, 0xA3014314);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">II</span><span>(b, c, d, a, x[k + 13], S44, 0x4E0811A1);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">II</span><span>(a, b, c, d, x[k + 4], S41, 0xF7537E82);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">II</span><span>(d, a, b, c, x[k + 11], S42, 0xBD3AF235);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">II</span><span>(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">II</span><span>(b, c, d, a, x[k + 9], S44, 0xEB86D391);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">a</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(a, AA);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">b</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(b, BB);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">c</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(c, CC);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">d</span><span> = </span><span class="attribute-value">addUnsigned</span><span>(d, DD);&nbsp;&nbsp;</span></span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>//&nbsp;&nbsp;&nbsp;&nbsp; var <span class="attribute">temp</span><span> = </span><span class="attribute-value">wordToHex</span><span>(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);&nbsp;&nbsp;</span></span></li><li><span>//&nbsp;&nbsp;&nbsp;&nbsp; return temp.toUpperCase();&nbsp;&nbsp;</span></li><li class="alt"><span>// &#125;;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>// console.log('刘新修本地封装/md5加密(--测试--)', md5('测试'))&nbsp;&nbsp;</span></li><li><span>//&quot;DB06C78D1E24CF708A14CE81C9B617EC&quot;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>/*** 第三方类库CryptoJS.MD5()方法 &#124;&#124; 和中国文书网测试结果一致(小写) ***/&nbsp;&nbsp;</span></li><li><span>console.log('刘新修/CryptoJS.MD5()-加密(--测试--)&#92;n', CryptoJS.MD5('测试').toString())&nbsp;&nbsp;</span></li><li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p style="box-sizing: border-box; margin-bottom: 16px; direction: ltr; line-height: 26px; text-rendering: optimizelegibility; text-align: justify;"><font color="#4f4f4f" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun"><span style="font-size: 16px;">中网文书网/MD5加密(--测试--) db06c78d1e24cf708a14ce81c9b617ec</span></font></p><p style="box-sizing: border-box; margin-bottom: 16px; direction: ltr; line-height: 26px; text-rendering: optimizelegibility; text-align: justify;"><font color="#4f4f4f" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun"><span style="font-size: 16px;">刘新修/CryptoJS.MD5()-加密(--测试--) db06c78d1e24cf708a14ce81c9b617ec</span></font></p><p style="box-sizing: border-box; margin-bottom: 16px; direction: ltr; line-height: 26px; text-rendering: optimizelegibility; text-align: justify;">&nbsp;</p><p style="box-sizing: border-box; margin-bottom: 16px; direction: ltr; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; font-size: 16px; line-height: 26px; text-rendering: optimizelegibility; color: rgb(79, 79, 79); text-align: justify;">这个文件只能在登入之后下载。请先 <a href="http://pic1.liuxinxiu.com:80/login.php?job=register">注册</a> 或 <a href="http://pic1.liuxinxiu.com:80/login.php">登入</a></p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/300/</link>
<title><![CDATA[php json 处理gbk转码utf-8问题（ json_encode转换数组，值为null）]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Tue, 28 Jul 2020 05:40:35 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/300/</guid> 
<description>
<![CDATA[ 
	<p><span style="color: rgb(83, 104, 121); font-family: &quot;Microsoft YaHei&quot;, Helvetica, Arial, &quot;Lucida Grande&quot;, Tahoma, sans-serif; font-size: 15px;">遇到个很幼稚的问题，用json_encode把数组转换为json时，发现转化的值为null。怎么回事呢？查找手册：发现了下面的话：</span></p><div style="box-sizing: inherit; border: 0px; font-family: &quot;Microsoft YaHei&quot;, Helvetica, Arial, &quot;Lucida Grande&quot;, Tahoma, sans-serif; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(83, 104, 121);">该函数只能接受 UTF-8 编码的数据（译注：指字符/字符串类型的数据）</div><div style="box-sizing: inherit; border: 0px; font-family: &quot;Microsoft YaHei&quot;, Helvetica, Arial, &quot;Lucida Grande&quot;, Tahoma, sans-serif; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(83, 104, 121);">&nbsp;</div><div style="box-sizing: inherit; border: 0px; font-family: &quot;Microsoft YaHei&quot;, Helvetica, Arial, &quot;Lucida Grande&quot;, Tahoma, sans-serif; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(83, 104, 121);">原来数组中有中文，需要转码哦，写个转换字符编码的函数吧：</div><div class="codeText"><div class="codeHead">PHP代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">function</span><span> encodeConvert(</span><span class="vars">$str</span><span>,</span><span class="vars">$fromCode</span><span>,</span><span class="vars">$toCode</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&#123;&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">if</span><span> (</span><span class="func">strtoupper</span><span>(</span><span class="vars">$toCode</span><span>) == </span><span class="func">strtoupper</span><span>(</span><span class="vars">$fromCode</span><span>)) </span><span class="keyword">return</span><span> </span><span class="vars">$str</span><span>;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">if</span><span> (</span><span class="func">is_string</span><span>(</span><span class="vars">$str</span><span>)) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">if</span><span> (function_exists(</span><span class="string">'mb_convert_encoding'</span><span>)) &#123;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">return</span><span> mb_convert_encoding(</span><span class="vars">$str</span><span>, </span><span class="vars">$toCode</span><span>, </span><span class="vars">$fromCode</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125; <span class="keyword">else</span><span> &#123;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">return</span><span> iconv(</span><span class="vars">$fromCode</span><span>, </span><span class="vars">$toCode</span><span>, </span><span class="vars">$str</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&#125; <span class="keyword">elseif</span><span> (</span><span class="func">is_array</span><span>(</span><span class="vars">$str</span><span>)) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">foreach</span><span> (</span><span class="vars">$str</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$k</span><span> =&gt; </span><span class="vars">$v</span><span>) &#123;&nbsp;&nbsp;</span></span></li><li><span><span class="vars">$str</span><span>[</span><span class="vars">$k</span><span>] = encodeConvert(</span><span class="vars">$v</span><span>, </span><span class="vars">$fromCode</span><span>, </span><span class="vars">$toCode</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span><span class="keyword">return</span><span> </span><span class="vars">$str</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span><span class="keyword">return</span><span> </span><span class="vars">$str</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li></ol></div><div style="box-sizing: inherit; border: 0px; font-family: &quot;Microsoft YaHei&quot;, Helvetica, Arial, &quot;Lucida Grande&quot;, Tahoma, sans-serif; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(83, 104, 121);">对于数组，通过下面方式json_encode调用，一切ok。</div><div class="codeText"><div class="codeHead">PHP代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="vars">$json_api</span><span>=json_encode(encodeConvert(</span><span class="vars">$json_api</span><span>,</span><span class="string">'gb2312'</span><span>,</span><span class="string">'utf-8'</span><span>));&nbsp;&nbsp;</span></span></li><li><span><span class="vars">$json_api</span><span>=json_decode(json_decode(</span><span class="vars">$json_api</span><span>));&nbsp;&nbsp;</span></span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow-wrap: break-word; font-variant-ligatures: common-ligatures;">今天数组json_encode转json的时候，输出一片空白，难道是数据量太大了？导致输出空白了？<br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" />后来检查下php程序似乎没有出错，就是json_encode的时候出现了问题，那到底是什么问题呢？</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow-wrap: break-word; font-variant-ligatures: common-ligatures;">我们先来说下json_encode这个函数</p><div class="codeText"><div class="codeHead">C#代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>(PHP&nbsp;5&nbsp;&gt;=&nbsp;5.2.0,&nbsp;PECL&nbsp;json&nbsp;&gt;=&nbsp;1.2.0,&nbsp;PHP&nbsp;7)&nbsp;&nbsp;</span></span></li><li><span>json_encode&nbsp;&mdash;&nbsp;对变量进行&nbsp;JSON&nbsp;编码&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>说明&nbsp;&nbsp;</span></li><li class="alt"><span>-----------------------------------------------------------&nbsp;&nbsp;</span></li><li><span><span class="keyword">string</span><span>&nbsp;json_encode&nbsp;(&nbsp;mixed&nbsp;$value&nbsp;[,&nbsp;</span><span class="keyword">int</span><span>&nbsp;$options&nbsp;=&nbsp;0&nbsp;[,&nbsp;</span><span class="keyword">int</span><span>&nbsp;$depth&nbsp;=&nbsp;512&nbsp;]]&nbsp;)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>参数&nbsp;&nbsp;</span></li><li class="alt"><span>-----------------------------------------------------------&nbsp;&nbsp;</span></li><li><span>value&nbsp;&nbsp;</span></li><li class="alt"><span>待编码的&nbsp;value&nbsp;，除了resource&nbsp;类型之外，可以为任何数据类型。&nbsp;&nbsp;</span></li><li><span>所有字符串数据的编码必须是&nbsp;UTF-8。&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>options&nbsp;&nbsp;</span></li><li class="alt"><span>由以下常量组成的二进制掩码：&nbsp;JSON_HEX_QUOT,&nbsp;JSON_HEX_TAG,&nbsp;JSON_HEX_AMP,&nbsp;JSON_HEX_APOS,&nbsp;JSON_NUMERIC_CHECK,&nbsp;JSON_PRETTY_PRINT,&nbsp;JSON_UNESCAPED_SLASHES,&nbsp;JSON_FORCE_OBJECT,&nbsp;JSON_PRESERVE_ZERO_FRACTION,&nbsp;JSON_UNESCAPED_UNICODE,&nbsp;JSON_PARTIAL_OUTPUT_ON_ERROR。&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>depth&nbsp;&nbsp;</span></li><li><span>设置最大深度。&nbsp;必须大于0。&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>返回值&nbsp;&nbsp;</span></li><li class="alt"><span>-----------------------------------------------------------&nbsp;&nbsp;</span></li><li><span>成功则返回&nbsp;JSON&nbsp;编码的&nbsp;<span class="keyword">string</span><span>&nbsp;或者在失败时返回&nbsp;FALSE&nbsp;。&nbsp;&nbsp;</span></span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow-wrap: break-word; font-variant-ligatures: common-ligatures;">注意：上面对参数明确说明（所有字符串数据的编码必须是 UTF-8）</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow-wrap: break-word; font-variant-ligatures: common-ligatures;">可能正是因为这一点导致我输出错误，但是我怎么知道，会是这个错误呢？因为我发现有一个这个函数<code style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 2px 4px; font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 14px; line-height: 22px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 2px; overflow-wrap: break-word;">json_last_error</code></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow-wrap: break-word; font-variant-ligatures: common-ligatures;">我们看下这个函数</p><div class="codeText"><div class="codeHead">C#代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>(PHP&nbsp;5&nbsp;&gt;=&nbsp;5.3.0,&nbsp;PHP&nbsp;7)&nbsp;&nbsp;</span></span></li><li><span>json_last_error&nbsp;&mdash;&nbsp;返回最后发生的错误&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>说明&nbsp;&nbsp;</span></li><li class="alt"><span>-----------------------------------------------------------&nbsp;&nbsp;</span></li><li><span><span class="keyword">int</span><span>&nbsp;json_last_error&nbsp;(&nbsp;</span><span class="keyword">void</span><span>&nbsp;)&nbsp;&nbsp;</span></span></li><li class="alt"><span>如果有，返回&nbsp;JSON&nbsp;编码解码时最后发生的错误。&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>参数&nbsp;&nbsp;</span></li><li><span>-----------------------------------------------------------&nbsp;&nbsp;</span></li><li class="alt"><span>此函数没有参数。&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>返回值&nbsp;&nbsp;</span></li><li><span>-----------------------------------------------------------&nbsp;&nbsp;</span></li><li class="alt"><span>返回一个整型（integer），这个值会是以下的常量之一：&nbsp;&nbsp;</span></li></ol></div><div class="codeText"><div class="codeHead">C#代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>例如：&nbsp;&nbsp;</span></span></li><li><span>echo&nbsp;json_encode(array(<span class="string">'error'</span><span>&nbsp;=&gt;&nbsp;</span><span class="string">'0'</span><span>,&nbsp;</span><span class="string">'message'</span><span>&nbsp;=&gt;&nbsp;</span><span class="string">'没有错误'</span><span>));&nbsp;&nbsp;</span></span></li><li class="alt"><span>var_dump(json_last_error());&nbsp;&nbsp;</span></li><li><span><span class="comment">//这里也可以是json_decode</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//错误码对照</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>0&nbsp;JSON_ERROR_NONE&nbsp;&nbsp;</span></li><li><span>1&nbsp;JSON_ERROR_DEPTH&nbsp;&nbsp;</span></li><li class="alt"><span>2&nbsp;JSON_ERROR_STATE_MISMATCH&nbsp;&nbsp;</span></li><li><span>3&nbsp;JSON_ERROR_CTRL_CHAR&nbsp;&nbsp;</span></li><li class="alt"><span>4&nbsp;JSON_ERROR_SYNTAX&nbsp;&nbsp;</span></li><li><span>5&nbsp;JSON_ERROR_UTF8&nbsp;&nbsp;</span></li><li class="alt"><span>6&nbsp;JSON_ERROR_RECURSION&nbsp;&nbsp;</span></li><li><span>7&nbsp;JSON_ERROR_INF_OR_NAN&nbsp;&nbsp;</span></li><li class="alt"><span>8&nbsp;JSON_ERROR_UNSUPPORTED_TYPE&nbsp;&nbsp;</span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow-wrap: break-word; font-variant-ligatures: common-ligatures;">我返回的是 int 5，对照返回错误码，自然而然就是（异常的 UTF-8 字符，也许是因为不正确的编码）这个错误了，知道错误后，然后检查你要返回的数据，再做下处理就OK了。</p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/php_class/</link>
<title><![CDATA[实例化php类的时候如何传参]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Thu, 18 May 2017 09:55:14 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/php_class/</guid> 
<description>
<![CDATA[ 
	<p>&nbsp;<span style="color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　当我们实例化一个php类的时候，要怎么传递参数呢？这取决于该类的构造方法。</span></p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　例：</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　person.class.php</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　class person&#123;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　var $name;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　var $color;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　var $sex;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　var $age;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　function __construct（$name,$age='',$sex='boy'）&#123;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　$this-&gt;name = $name;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　$this-&gt;age = $age;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　$this-&gt;sex = $sex;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　$this-&gt;color = 'yello';</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　&#125;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　function eat（）&#123;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　echo $this-&gt;name.'要吃饭';</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　&#125;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　function xinxi（）&#123;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　echo $this-&gt;name.' is '.$this-&gt;sex.' and age is '.$this-&gt;age.' fuse is '.$this-&gt;color;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　&#125;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　&#125;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　?&gt;</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　son.php</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　include（'person.class.php'）；</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　$son = new person（'cuihua',25,'girl'）；//此处的参数传递要和类的构造方法里面的参数顺序对应</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　//$son-&gt;xinxi（）；//cuihua is girl and age is 25 fuse is yello</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　$son-&gt;name = '田妞';</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　$son-&gt;eat（）；//田妞要吃饭</p><p style="margin-top: 15px; margin-bottom: 0px; word-break: break-all; color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 16px; text-align: justify;">　　?&gt;</p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/262/</link>
<title><![CDATA[PHP按符号截取字符串的指定部分]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Wed, 26 Oct 2016 06:30:39 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/262/</guid> 
<description>
<![CDATA[ 
	<p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">有时我们想截取最后一个斜杠'/'后面的数字；</p><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http://等等；</p><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">字符串的截取php内置函数就有很多种；简单的写几个示例；</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_265214" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div></td><td class="code" style="height: 26px; width: 692px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">=</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'123/456/789/abc'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">;</code></div></div></td></tr></tbody></table></div></div><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">截取<span style="padding: 0px; margin: 0px; color: rgb(255, 0, 0);">第一个斜杠前面</span>的内容可以这样来：</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_247598" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div></td><td class="code" style="height: 26px; width: 692px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">substr</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,0,</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">strpos</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,&nbsp;</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">))</code></div></div></td></tr></tbody></table></div></div><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">&nbsp;&nbsp;&nbsp;&nbsp;或者</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_983375" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div><div class="line number2 index1 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">2</div><div class="line number3 index2 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">3</div></td><td class="code" style="height: 26px; width: 692px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">=</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">explode</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,&nbsp;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">);</code></div><div class="line number2 index1 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">[0];</code></div><div class="line number3 index2 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">//&nbsp;输出&nbsp;123</code></div></div></td></tr></tbody></table></div></div><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">截取<span style="padding: 0px; margin: 0px; color: rgb(255, 0, 0);">第一个斜杠后面</span>的内容可以这样来：</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_782103" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div><div class="line number2 index1 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">2</div></td><td class="code" style="height: 26px; width: 692px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">substr</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">strpos</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">)+1);</code></div><div class="line number2 index1 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">//输出&nbsp;456/789/abc</code></div></div></td></tr></tbody></table></div></div><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">&nbsp;</p><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">截取<span style="padding: 0px; margin: 0px; color: rgb(255, 0, 0);">最后一个斜杠后面</span>的内容可以这样来：</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_959738" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div></td><td class="code" style="height: 26px; width: 692px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">trim(</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">strrchr</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,&nbsp;</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">),</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">);</code></div></div></td></tr></tbody></table></div></div><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">&nbsp;&nbsp;&nbsp;&nbsp;或者如果知道斜杠的个数</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_559332" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div><div class="line number2 index1 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">2</div><div class="line number3 index2 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">3</div></td><td class="code" style="height: 26px; width: 692px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">=</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">explode</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,&nbsp;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">);</code></div><div class="line number2 index1 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">[3];</code></div><div class="line number3 index2 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">//输出&nbsp;abc</code></div></div></td></tr></tbody></table></div></div><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">&nbsp;</p><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">但是问题来了；如果不知道有多少个斜杠呢？如果想要第二个斜杠和第三个斜杠中间的内容呢？</p><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">下面我写的这个函数就可以轻松解决如上&nbsp;所有问题；</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_25249" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div><div class="line number2 index1 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">2</div><div class="line number3 index2 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">3</div><div class="line number4 index3 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">4</div><div class="line number5 index4 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">5</div><div class="line number6 index5 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">6</div><div class="line number7 index6 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">7</div><div class="line number8 index7 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">8</div><div class="line number9 index8 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">9</div><div class="line number10 index9 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">10</div><div class="line number11 index10 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">11</div><div class="line number12 index11 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">12</div><div class="line number13 index12 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">13</div><div class="line number14 index13 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">14</div><div class="line number15 index14 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">15</div><div class="line number16 index15 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">16</div><div class="line number17 index16 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">17</div><div class="line number18 index17 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">18</div><div class="line number19 index18 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">19</div><div class="line number20 index19 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">20</div><div class="line number21 index20 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">21</div><div class="line number22 index21 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">22</div><div class="line number23 index22 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">23</div><div class="line number24 index23 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">24</div><div class="line number25 index24 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">25</div><div class="line number26 index25 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">26</div><div class="line number27 index26 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">27</div></td><td class="code" style="height: 26px; width: 685px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">/**</code></div><div class="line number2 index1 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">*&nbsp;按符号截取字符串的指定部分</code></div><div class="line number3 index2 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">*&nbsp;@param&nbsp;string&nbsp;$str&nbsp;需要截取的字符串</code></div><div class="line number4 index3 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">*&nbsp;@param&nbsp;string&nbsp;$sign&nbsp;需要截取的符号</code></div><div class="line number5 index4 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">*&nbsp;@param&nbsp;int&nbsp;$number&nbsp;如是正数以0为起点从左向右截&nbsp;&nbsp;负数则从右向左截</code></div><div class="line number6 index5 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">*&nbsp;@return&nbsp;string&nbsp;返回截取的内容</code></div><div class="line number7 index6 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">*/</code></div><div class="line number8 index7 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;">&nbsp;</div><div class="line number9 index8 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">function</code>&nbsp;<code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">cut_str(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$sign</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">)&#123;</code></div><div class="line number10 index9 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">=</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">explode</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$sign</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,&nbsp;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">);</code></div><div class="line number11 index10 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$length</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">=</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">count</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">);</code></div><div class="line number12 index11 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">if</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&lt;0)&#123;</code></div><div class="line number13 index12 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$new_array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">=</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">array_reverse</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">);</code></div><div class="line number14 index13 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$abs_number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">=</code><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">abs</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">);</code></div><div class="line number15 index14 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">if</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$abs_number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&gt;</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$length</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">)&#123;</code></div><div class="line number16 index15 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">return</code>&nbsp;<code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'error'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">;</code></div><div class="line number17 index16 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#125;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">else</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#123;</code></div><div class="line number18 index17 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">return</code>&nbsp;<code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$new_array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">[</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$abs_number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">-1];</code></div><div class="line number19 index18 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#125;</code></div><div class="line number20 index19 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#125;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">else</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#123;</code></div><div class="line number21 index20 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">if</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&gt;=</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$length</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">)&#123;</code></div><div class="line number22 index21 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">return</code>&nbsp;<code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'error'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">;</code></div><div class="line number23 index22 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#125;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">else</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#123;</code></div><div class="line number24 index23 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php keyword" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 102, 153) !important;">return</code>&nbsp;<code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$array</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">[</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$number</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">];</code></div><div class="line number25 index24 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#125;</code></div><div class="line number26 index25 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php spaces" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#125;</code></div><div class="line number27 index26 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">&#125;</code></div></div></td></tr></tbody></table></div></div><p style="margin-bottom: 0px; clear: both; height: auto; overflow: hidden; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;">示例：</p><div style="padding: 0px; margin: 0px; color: rgb(80, 80, 80); font-family: 宋体, &quot;Arial Narrow&quot;, arial, serif;"><div id="highlighter_59446" class="syntaxhighlighter&nbsp;&nbsp;php" style="width: 720px; padding: 0px !important; margin: 0.3em 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow-x: auto !important; overflow-y: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;"><table border="0" cellpadding="0" cellspacing="0" style="padding: 0px; margin: 0px auto 10px; font-size: 12px; border-collapse: collapse;"><tbody style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><tr style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;"><td class="gutter" style="padding: 0px !important; margin: 0px !important; font-size: 1em !important; background: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; border-radius: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important; color: rgb(175, 175, 175) !important;"><div class="line number1 index0 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">1</div><div class="line number2 index1 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">2</div><div class="line number3 index2 alt2" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">3</div><div class="line number4 index3 alt1" style="word-wrap: normal; padding: 0px 0.5em 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: rgb(108, 226, 108) !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; white-space: pre !important;">4</div></td><td class="code" style="height: 26px; width: 692px; padding: 0px !important; margin: 0px !important; font-size: 1em !important; line-height: 1.1em !important; float: none !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; background: none !important; border-radius: 0px !important; bottom: auto !important; left: auto !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; min-height: auto !important;"><div class="container" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><div class="line number1 index0 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">cut_str(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,0);&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">//输出&nbsp;123</code></div><div class="line number2 index1 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">cut_str(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,2);&nbsp;</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">//输出&nbsp;789</code></div><div class="line number3 index2 alt2" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">cut_str(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,-1);</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">//输出&nbsp;abc</code></div><div class="line number4 index3 alt1" style="white-space: nowrap; padding: 0px 1em !important; margin: 0px !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important;"><code class="php functions" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(255, 20, 147) !important;">echo</code>&nbsp;<code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">cut_str(</code><code class="php variable" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(170, 119, 0) !important;">$str</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,</code><code class="php string" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: blue !important;">'/'</code><code class="php plain" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important;">,-3);</code><code class="php comments" style="padding: 0px !important; margin: 0px !important; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; left: auto !important; line-height: 1.1em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: rgb(0, 130, 0) !important;">//输出&nbsp;456</code></div></div></td></tr></tbody></table></div></div><br/>Tags - <a href="http://pic1.liuxinxiu.com:80/tags/substr/" rel="tag">substr</a> , <a href="http://pic1.liuxinxiu.com:80/tags/strpos/" rel="tag">strpos</a>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/CORS_PHP/</link>
<title><![CDATA[CORS跨域资源共享PHP版本实现]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Mon, 12 Sep 2016 04:15:12 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/CORS_PHP/</guid> 
<description>
<![CDATA[ 
	<p>使用PHP实现CORS 跨域资源共享，可传参origin通过限制，代码如下：</p><div class="codeText"><div class="codeHead">PHP代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>&lt;?php&nbsp;&nbsp;</span></span></li><li><span><span class="comment">/******** 定义Response返回header头格式及编码 ********/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>header(<span class="string">'Content-type: application/json; charset=utf-8'</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/******** 回调参数设置 ********/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="vars">$param</span><span>=</span><span class="string">&quot;origin&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="vars">$origin_URL</span><span>=</span><span class="vars">$_REQUEST</span><span>[</span><span class="vars">$param</span><span>];&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/********　json_encode 转成=&gt; encode_json *******/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">function</span><span> encode_json(</span><span class="vars">$str</span><span>)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> urldecode(json_encode(url_encode(</span><span class="vars">$str</span><span>)));&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span><span class="keyword">function</span><span> url_encode(</span><span class="vars">$str</span><span>)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(</span><span class="func">is_array</span><span>(</span><span class="vars">$str</span><span>))&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">foreach</span><span>(</span><span class="vars">$str</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$key</span><span>=&gt;</span><span class="vars">$value</span><span>)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$str</span><span>[urlencode(</span><span class="vars">$key</span><span>)]=url_encode(</span><span class="vars">$value</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<span class="keyword">else</span><span>&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$str</span><span>=urlencode(</span><span class="vars">$str</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="vars">$str</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/**************** &#92;/&#92;/反转义范例 ********************/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">function</span><span> stripslashes_deep(</span><span class="vars">$value</span><span>)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$value</span><span>=</span><span class="func">is_array</span><span>(</span><span class="vars">$value</span><span>)?&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="func">array_map</span><span>(</span><span class="string">'stripslashes_deep'</span><span>,</span><span class="vars">$value</span><span>):&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="func">stripslashes</span><span>(</span><span class="vars">$value</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="vars">$value</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/******************** Example ******************************/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="vars">$array</span><span>=</span><span class="keyword">array</span><span>(</span><span class="string">&quot;f&#92;&#92;'oo&quot;</span><span>, </span><span class="string">&quot;b&#92;&#92;'ar&quot;</span><span>, </span><span class="keyword">array</span><span>(</span><span class="string">&quot;fo&#92;&#92;'o&quot;</span><span>, </span><span class="string">&quot;b&#92;&#92;'ar&quot;</span><span>));&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="vars">$array</span><span>=stripslashes_deep(</span><span class="vars">$array</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/******************** Output *******************************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//echo encode_json(array('china'=&gt;'钓鱼岛是中国的!','Japan'=&gt;array('name'=&gt;'日本狗!')));</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/************ 定义Post过来什么数据就返回什么数据 ***********/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="vars">$res</span><span>=</span><span class="keyword">array</span><span>(&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;'status<span class="string">'=&gt;-1,</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span>name</span><span class="string">'=&gt;isset($_POST['</span><span>name</span><span class="string">'])?$_POST['</span><span>name</span><span class="string">']:'</span><span class="string">',</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span>gender</span><span class="string">'=&gt;isset($_POST['</span><span>gender</span><span class="string">'])?$_POST['</span><span>gender</span><span class="string">']:'</span><span class="string">'</span> </span></li><li class="alt"><span><span class="string">);</span> </span></li><li><span> </span></li><li class="alt"><span><span class="string">$arr=array(</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp; &quot;status&quot;=&gt;1,</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp; &quot;url&quot;=&gt;&quot;http://www.liuxinxiu.com/&quot;,</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp; &quot;dataList&quot;=&gt;array(</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;siteId&quot;=&gt;&quot;1&quot;,</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;title&quot;=&gt;urldecode('</span><span>我的博客</span><span class="string">'),</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;images&quot;=&gt;&quot;http://192.168.9.100/upload/2015/06/20/moren.gif&quot;,</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;indexNum&quot;=&gt;10,</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;pageNum&quot;=&gt;&quot;300&quot;,</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tagNum&quot;=&gt;&quot;20&quot;,</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;linkType&quot;=&gt;&quot;linkTaobao&quot;,</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;publishTime&quot;=&gt;&quot;20:00:00&quot;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</span> </span></li><li><span><span class="string">);</span> </span></li><li class="alt"><span><span class="string">$arr['</span><span>dataList</span><span class="string">']['</span><span>images</span><span class="string">']=&quot;http://www.liuxinxiu.com/upload/2015/06/20/moren.gif&quot;;</span> </span></li><li><span><span class="string">//print_r($arr);</span> </span></li><li class="alt"><span> </span></li><li><span> </span></li><li class="alt"><span><span class="string">/*************** 定义错误信息 ***************/</span> </span></li><li><span><span class="string">$errStr='</span><span>&#123;</span><span class="string">&quot;status&quot;</span><span>:-1,</span><span class="string">&quot;info&quot;</span><span>:</span><span class="string">&quot;Request Error&quot;</span><span>&#125;</span><span class="string">';</span> </span></li><li class="alt"><span><span class="string">$errJson=json_decode($errStr,true); //json_decode转成了array数组</span> </span></li><li><span><span class="string">//print_r($errJson) //转成了array数组</span> </span></li><li class="alt"><span> </span></li><li><span><span class="string">/************** 获取客户端的Origin域名 **************/</span> </span></li><li class="alt"><span><span class="string">$origin=isset($_SERVER['</span><span>HTTP_ORIGIN</span><span class="string">'])?$_SERVER['</span><span>HTTP_ORIGIN</span><span class="string">']:'</span><span class="string">';</span> </span></li><li><span> </span></li><li class="alt"><span><span class="string">/******** 定义符合规则的域名数组 ********/</span> </span></li><li><span><span class="string">$allow_origin=array(</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span>http:</span><span class="comment">//liuxinxiu.com',</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;'http:<span class="comment">//code.liuxinxiu.com',</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;'http:<span class="comment">//test.liuxinxiu.com'</span><span>&nbsp;&nbsp;</span></span></li><li><span>);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/****************** 判断如果有POST过来数据 *********************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">if</span><span>(isset(</span><span class="vars">$_POST</span><span>['name</span><span class="string">'])&amp;&amp;isset($_POST['</span><span>gender</span><span class="string">']))&#123;</span> </span></li><li><span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;/********** 只要是POST请求过来无论合法与否都要正常通信 **********/</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp; header('</span><span>Access-Control-Allow-Methods:POST</span><span class="string">');</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp; header('</span><span>Access-Control-Allow-Headers:x-requested-with,content-type</span><span class="string">');</span> </span></li><li><span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;/******** 匹配客户端域名是否在数组列表中 ******/</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;if(in_array($origin,$allow_origin))&#123;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header('</span><span>Access-Control-Allow-Origin:</span><span class="string">'.$origin);</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res['</span><span>status</span><span class="string">']=1;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res['</span><span>getUser</span><span class="string">']=$arr;</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo json_encode($res);</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&#125;</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;else if(!in_array($origin,$allow_origin))&#123;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/******** 如有设置就取设置URL返回头信息 ********/</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset($origin_URL))&#123;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header('</span><span>Access-Control-Allow-Origin:</span><span class="string">'.$origin_URL);</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res['</span><span>status</span><span class="string">']=1;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res['</span><span>getUser</span><span class="string">']=$arr;</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo encode_json($res);</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//echo json_encode(&quot;中文&quot;, JSON_UNESCAPED_UNICODE);</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/******** 如没有设置URL就返回错误信息&nbsp;&nbsp;********/</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&#123;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header('</span><span>Access-Control-Allow-Origin:</span><span class="string">'.$origin);</span> </span></li><li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$errJson['</span><span>status</span><span class="string">']=-1;</span> </span></li><li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$errJson['</span><span>info</span><span class="string">']=&quot;You don'</span><span>t have permission to submit!&quot;;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="func">echo</span><span> encode_json(</span><span class="vars">$errJson</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span><span class="comment">/************ 没有所匹配的POST提交数据 ***********/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">else</span><span>&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(</span><span class="vars">$GLOBALS</span><span>[</span><span class="string">'HTTP_RAW_POST_DATA'</span><span>])&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header(<span class="string">'Access-Control-Allow-Origin:'</span><span>.</span><span class="vars">$origin</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$errJson</span><span>[</span><span class="string">'status'</span><span>]=-1;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$errJson</span><span>[</span><span class="string">'info'</span><span>]=</span><span class="string">&quot;Syntax error in parameters or arguments.&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="func">echo</span><span> encode_json(</span><span class="vars">$errJson</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header(<span class="string">&quot;Content-type: text/html; charset=utf-8&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="func">echo</span><span> </span><span class="string">'It is forbidden for the URL request!'</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>?&gt;&nbsp;&nbsp;</span></li></ol></div><p>PHP数据提交接口地址 (禁止使用GET访问)：<a href="http://code.liuxinxiu.com/php/Interface/server.php" target="_blank"><u><strong><span style="color: rgb(51, 0, 255);">http://code.liuxinxiu.com/php/Interface/server.php</span></strong></u></a></p><p>配合HTML代码如下：</p><div class="codeText"><div class="codeHead">XML/HTML代码</div><ol start="1" class="dp-xml"><li class="alt"><span><span>&lt;!DOCTYPE html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">charset</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">&quot;X-UA-Compatible&quot;</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;IE=edge,chrome=1&quot;</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;viewport&quot;</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;width=device-width, initial-scale=1.0, user-scalable=no&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">name</span><span>=&quot;format-detection&quot;</span><span class="attribute-value">content</span><span>=&quot;</span><span class="attribute">telephone</span><span>=</span><span class="attribute-value">no</span><span>&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;apple-mobile-web-app-capable&quot;</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;yes&quot;</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;apple-mobile-web-app-status-bar-style&quot;</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;black&quot;</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">style</span><span class="tag">&gt;</span><span>body,html &#123;background:#fff;font-family: &quot;Lucida Grande&quot;,Calibri,Arial;font-size:12pt;color: #333;background: #f8f8f8;text-align:center;&#125;*&#123;margin:0;padding:0;&#125;h1&#123;line-height:1.6em;font-size:24px;text-indent:.5em;padding-top:.6em&#125;i&#123;line-height:2em;font-size:18px;color:#999;&#125;.line&#123;height:10px;border-bottom:1px solid #ccc;font-size:0;overflow:hidden;&#125;</span><span class="tag">&lt;/</span><span class="tag-name">style</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>跨域测试</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">h1</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;show&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;button&quot;</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;Click me&quot;</span><span> </span><span class="attribute">onclick</span><span>=</span><span class="attribute-value">&quot;msg()&quot;</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;//code.jquery.com/jquery-1.11.3.min.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">'text/javascript'</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>/********** 获取URL参数 **********/&nbsp;&nbsp;</span></li><li><span>function getQueryString(name)&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>var <span class="attribute">reg</span><span>=</span><span class="attribute-value">new</span><span> RegExp(&quot;(^&#124;&amp;)&quot;+name+&quot;=([^&amp;]*)(&amp;&#124;$)&quot;,&quot;i&quot;);&nbsp;&nbsp;</span></span></li><li><span>var <span class="attribute">r</span><span>=</span><span class="attribute-value">window</span><span>.location.search.substr(1).match(reg);&nbsp;&nbsp;</span></span></li><li class="alt"><span>if (r!=null) return unescape(r[2]); return null;&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>/********** 发起Ajax请求 **********/&nbsp;&nbsp;</span></li><li><span>function msg()&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;/******* 动态切换提交数据 *******/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;if(_origin)&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(_name&amp;&amp;_gender)&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var <span class="attribute">data</span><span>=&#123;name:_name,gender:_gender,origin:_origin&#125;;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var <span class="attribute">data</span><span>=&#123;name:&quot;xiaoming&quot;,gender:&quot;male&quot;,origin:_origin&#125;;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;else if(<span class="attribute">_error</span><span>==null)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var <span class="attribute">data</span><span>=&#123;name:&quot;xiaoming&quot;,gender:&quot;male&quot;&#125;;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;else if(_error)&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var <span class="attribute">data</span><span>=&#123;xxx:111&#125;;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;/******* 动态设置提交URL *******/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;if(_url)&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var <span class="attribute">urlPath</span><span>=</span><span class="attribute-value">_url</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;else&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var <span class="attribute">urlPath</span><span>=</span><span class="attribute-value">'http://code.liuxinxiu.com/php/Interface/server.php'</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;$.ajax(&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type:'post',&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url:urlPath,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data:data,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cache:false,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataType:'json',&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; success:function(data)&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(data.name)&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;show&quot;)<span class="attribute">.innerHTML</span><span>=</span><span class="attribute-value">data</span><span>.name+' '+data.gender;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(data.status!=1)&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;show&quot;)<span class="attribute">.innerHTML</span><span>=</span><span class="attribute-value">data</span><span>.info;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error:function()&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log(&quot;请求错误//&quot;)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>/***********************************************************************************************&nbsp;&nbsp;</span></li><li><span>$.post(&quot;http://www.server.com/server.php&quot;,&#123;name:&quot;fdipzone&quot;,gender:&quot;male&quot;&#125;).done(function(data)&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;show&quot;)<span class="attribute">.innerHTML</span><span>=</span><span class="attribute-value">data</span><span>.name+' '+data.gender;&nbsp;&nbsp;</span></span></li><li><span>&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>**********************************************************************************************/&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p>HTML访问地址 (测试跨域) ==&gt; <a href="http://test1.liuxinxiu.com/php/Interface/html/server.html?n=php" target="_blank"><u><strong><span style="color: rgb(51, 0, 255);">http://test1.liuxinxiu.com/php/Interface/html/server.html?n=php</span></strong></u></a></p><p>HTML访问地址 (非法参数) ==&gt; <a href="http://test1.liuxinxiu.com/php/Interface/html/server.html?error=php" target="_blank"><u><strong><span style="color: rgb(51, 0, 255);">http://test1.liuxinxiu.com/php/Interface/html/server.html?error=php</span></strong></u></a></p><br/>Tags - <a href="http://pic1.liuxinxiu.com:80/tags/cors/" rel="tag">cors</a> , <a href="http://pic1.liuxinxiu.com:80/tags/php/" rel="tag">php</a>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/php_http/</link>
<title><![CDATA[PHP处理HTTP请求的几种方式]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Mon, 05 Sep 2016 09:48:38 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/php_http/</guid> 
<description>
<![CDATA[ 
	<p><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">GET，一般是明文的，比如XXX.php?a=1&amp;b=2，这里的a，b就必须用GET方式接收，接收代码如下：</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">$a = $_GET['a'];</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">$b = $_GET['b'];</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">//接收a,b两个变量</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">POST，一般是隐藏的非明文的，一般表单设置成POST的，接收方式如下：</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">//比如有个表单，表单中有两个文本框，name 分别是 a,b，那么代码如下：</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">$a = $_POST['a'];</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">$b = $_POST['b'];</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">另外：$_REQUEST，可以同时接收GET、PO</span><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">ST的变量，用法如：</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', arial, 宋体, sans-serif, tahoma; line-height: 24px;">$_REQUEST['a'];//接收变量a，a可以是GET的也可以是POST的</span></p><p><span style="color: rgb(255, 0, 0);"><strong>另外说说PHP获取POST请求的几种方式：</strong></span></p><pre id="best-content-2323710466" accuse="aContent" class="best-text mb-10" style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: 'Microsoft YaHei', arial, 'courier new', courier, 宋体, monospace; white-space: pre-wrap; word-wrap: break-word; line-height: 26px; color: rgb(51, 51, 51); min-height: 55px;">方法1、最常见的方法是：$_POST['fieldname'];<br />说明：只能接收Content-Type: application/x-www-form-urlencoded提交的数据<br />解释：也就是表单POST过来的数据<br /> <br />方法2、file_get_contents(&ldquo;php://input&rdquo;);<br />说明：<br />允许读取 POST 的原始数据。<br />和 $HTTP_RAW_POST_DATA 比起来，它给内存带来的压力较小，并且不需要任何特殊的 <a href="https://www.baidu.com/s?wd=php.ini&amp;tn=44039180_cpr&amp;fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3rH63mWw9nWuhP1cLrAP-0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHfYP1D4nWDYnW0vnH0vPWmzn0" target="_blank" class="baidu-highlight" rel="nofollow" style="color: rgb(63, 136, 191); text-decoration: none;">php.ini</a> 设置。<br />php://input 不能用于 enctype=&rdquo;multipart/form-data&rdquo;。<br />解释：<br />对于未指定 Content-Type 的POST数据，则可以使用file_get_contents(&ldquo;php://input&rdquo;);来获取原始数据。<br />事实上，用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。<br />所以用方法二是最保险的方法。<br /> <br />方法3、$GLOBALS['HTTP_RAW_POST_DATA'];<br />说明：<br />总是产生 $HTTP_RAW_POST_DATA&nbsp;&nbsp;变量包含有原始的 POST 数据。<br />此变量仅在碰到未识别 MIME 类型的数据时产生。<br />$HTTP_RAW_POST_DATA&nbsp;&nbsp;对于 enctype=&rdquo;multipart/form-data&rdquo;&nbsp;&nbsp;表单数据不可用<br />如果post过来的数据不是PHP能够识别的，可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收，<br />比如 text/xml 或者 soap 等等<br />解释：<br />$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。<br />$_POST或$_REQUEST存放的是 PHP以key=&gt;value的形式格式化以后的数据。<br />但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置，即POST数据时 必须显式示指明Content-Type: application/x-www-form-urlencoded，POST的数据才会存放到 $GLOBALS['HTTP_RAW_POST_DATA']中。</pre><br/>Tags - <a href="http://pic1.liuxinxiu.com:80/tags/php/" rel="tag">php</a>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/php_urlencode/</link>
<title><![CDATA[php [urlencode urldecode] 函数]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Tue, 29 Mar 2016 05:28:01 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/php_urlencode/</guid> 
<description>
<![CDATA[ 
	<p>&nbsp;urlencode()编码：对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号（%）后跟两位十六进制数，空格则编码为加号（+）。</p><div>urldecode()解码：还原 URL 编码字符串。</div><div>示例：</div><div>&lt;?php</div><div>header(&quot;Content-Type:text/html; charset=utf-8&quot;);</div><div>//对参数值进行编码</div><div>$parm=urlencode(&quot;演示php-mysql&quot;);</div><div>&nbsp;</div><div>//拼接url</div><div>$url=&quot;decode.php?par=&quot;.$parm;</div><div>?&gt;</div><div>&nbsp;</div><div>&lt;a href=&quot;&lt;?php echo $url;?&gt;&quot;&gt;urlencode演示&lt;/a&gt;</div><div>&nbsp;</div><div>点击连接后地址栏中汉字被编码了：</div><div>http://localhost/decode.php?par=%E6%BC%94%E7%A4%BAphp-mysql</div><div>------------------------------------------------------------------------</div><div>&nbsp;</div><div>//decode.php</div><div>&lt;?php</div><div>//获取参数值</div><div>$parValue=$_GET['par'];</div><div>&nbsp;</div><div>//解码</div><div>echo urldecode($parValue);</div><div>//运行结果：演示php-mysql</div><div>?&gt;</div>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/gd-png/</link>
<title><![CDATA[php基于GD库，绘制PNG图像Demo]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[PHP/Java/Go]]></category>
<pubDate>Thu, 10 Mar 2016 10:21:08 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/gd-png/</guid> 
<description>
<![CDATA[ 
	<div class="codeText"><div class="codeHead">PHP代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>&lt;?php&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//创建画布，返回一个资源类型的变量$image，并在内存中开辟一个临时区域</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$image</span><span> = imagecreatetruecolor(400,400);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//创建画布大小为400x400</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//设置图像中所需的颜色，相当于在画画时准备的染料盒</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$white</span><span> = imagecolorallocate(</span><span class="vars">$image</span><span>, 0xFF, 0xFF, 0xFF);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为白色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$gray</span><span> = imagecolorallocate(</span><span class="vars">$image</span><span>, 0xC0, 0xC0, 0xC0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//为图像分配颜色为灰色</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$darkgray</span><span> = imagecolorallocate(</span><span class="vars">$image</span><span>, 0x90, 0x90, 0x90);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//为图像分配颜色为暗灰色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$navy</span><span> = imagecolorallocate(</span><span class="vars">$image</span><span>, 0x00, 0x00, 0x80);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//为图像分配颜色为深蓝色</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$darknavy</span><span> = imagecolorallocate(</span><span class="vars">$image</span><span>, 0x00, 0x00, 0x50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//为图像分配颜色为暗深蓝色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$red</span><span> = imagecolorallocate(</span><span class="vars">$image</span><span>, 0xFF, 0x00, 0x00);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//为图像分配颜色为红色</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$darkred</span><span> = imagecolorallocate(</span><span class="vars">$image</span><span>, 0x90, 0x00, 0x00);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//为图像分配颜色为暗红色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefill(<span class="vars">$image</span><span>, 0, 0, </span><span class="vars">$white</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为画布背景填充背景颜色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//动态制作3D效果</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span> (</span><span class="vars">$i</span><span>=220;</span><span class="vars">$i</span><span>&gt;200;</span><span class="vars">$i</span><span>--)&#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//循环10次画出立体效果</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>, 200, </span><span class="vars">$i</span><span>, 400, 200, -160, 40, </span><span class="vars">$darknavy</span><span>, IMG_ARC_PIE);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>, 200, </span><span class="vars">$i</span><span>, 400, 200, 40, 75, </span><span class="vars">$darkgray</span><span>, IMG_ARC_PIE);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>, 200, </span><span class="vars">$i</span><span>, 400, 200, 75, 200, </span><span class="vars">$darkred</span><span>, IMG_ARC_PIE);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>, 200, 200, 400, 200, -160, 40, </span><span class="vars">$navy</span><span>, IMG_ARC_PIE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//画一椭圆弧且填充</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>, 200, 200, 400, 200, 40 , 75, </span><span class="vars">$gray</span><span>, IMG_ARC_PIE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//画一椭圆弧且填充</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>, 200, 200, 400, 200, 75, 200, </span><span class="vars">$red</span><span>, IMG_ARC_PIE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//画一椭圆弧且填充</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagestring(<span class="vars">$image</span><span>, 20, 100, 230, </span><span class="string">'34.7%'</span><span>, </span><span class="vars">$white</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//水平地画一行字符串,依次是F/X/Y/--数值越大向右、向下</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;imagestring(<span class="vars">$image</span><span>, 20, 200, 150, </span><span class="string">'55.5%'</span><span>, </span><span class="vars">$white</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//水平地画一行字符串,依次是F/X/Y/--数值越大向右、向下</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//向浏览器中输出一个GIF格式的图片</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;header(<span class="string">'Content-type:image/png'</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//使用头函数告诉浏览器以图像方式处理以下输出</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;imagepng(<span class="vars">$image</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//向浏览器输出</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagedestroy(<span class="vars">$image</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="comment">//销毁图像释放资源</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//header(&quot;Content-type: text/html; charset=utf-8&quot;);</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//$str=&quot;&lt;div&gt;'$image'&lt;/div&gt;&quot;;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//echo $str;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>?&gt;&nbsp;&nbsp;</span></li></ol></div><p>gd-png.php</p><div class="codeText"><div class="codeHead">PHP代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>&lt;?php&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//创建画布，返回一个资源类型的变量$image，并在内存中开辟一个临时区域</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$image</span><span>&nbsp;=&nbsp;imagecreatetruecolor(375,375);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//创建画布大小为375x375&nbsp;iPhone6&nbsp;375X627</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//设置图像中所需的颜色，相当于在画画时准备的染料盒</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$white</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$image</span><span>,&nbsp;0xFF,&nbsp;0xFF,&nbsp;0xFF);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为白色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$gray</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$image</span><span>,&nbsp;0xC0,&nbsp;0xC0,&nbsp;0xC0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为灰色</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$darkgray</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$image</span><span>,&nbsp;0x90,&nbsp;0x90,&nbsp;0x90);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为暗灰色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$navy</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$image</span><span>,&nbsp;0x00,&nbsp;0x00,&nbsp;0x80);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为深蓝色</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$darknavy</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$image</span><span>,&nbsp;0x00,&nbsp;0x00,&nbsp;0x50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为暗深蓝色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$red</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$image</span><span>,&nbsp;0xFF,&nbsp;0x00,&nbsp;0x00);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为红色</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vars">$darkred</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$image</span><span>,&nbsp;0x90,&nbsp;0x00,&nbsp;0x00);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为图像分配颜色为暗红色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefill(<span class="vars">$image</span><span>,&nbsp;0,&nbsp;0,&nbsp;</span><span class="vars">$white</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//为画布背景填充背景颜色</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//动态制作3D效果</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="vars">$i</span><span>=200;</span><span class="vars">$i</span><span>&gt;180;</span><span class="vars">$i</span><span>--)&#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//循环10次画出立体效果</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>,&nbsp;187,&nbsp;</span><span class="vars">$i</span><span>,&nbsp;360,&nbsp;180,&nbsp;-160,&nbsp;40,&nbsp;</span><span class="vars">$darknavy</span><span>,&nbsp;IMG_ARC_PIE);&nbsp;&nbsp;&nbsp;</span><span class="comment">//</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>,&nbsp;187,&nbsp;</span><span class="vars">$i</span><span>,&nbsp;360,&nbsp;180,&nbsp;40,&nbsp;75,&nbsp;</span><span class="vars">$darkgray</span><span>,&nbsp;IMG_ARC_PIE);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>,&nbsp;187,&nbsp;</span><span class="vars">$i</span><span>,&nbsp;360,&nbsp;180,&nbsp;75,&nbsp;200,&nbsp;</span><span class="vars">$darkred</span><span>,&nbsp;IMG_ARC_PIE);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>,&nbsp;187,&nbsp;180,&nbsp;360,&nbsp;180,&nbsp;-160,&nbsp;40,&nbsp;</span><span class="vars">$navy</span><span>,&nbsp;IMG_ARC_PIE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//画一椭圆弧且填充,第一个187-180&nbsp;是错开7像素</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>,&nbsp;187,&nbsp;180,&nbsp;360,&nbsp;180,&nbsp;40&nbsp;,&nbsp;75,&nbsp;</span><span class="vars">$gray</span><span>,&nbsp;IMG_ARC_PIE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//画一椭圆弧且填充</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagefilledarc(<span class="vars">$image</span><span>,&nbsp;187,&nbsp;180,&nbsp;360,&nbsp;180,&nbsp;75,&nbsp;200,&nbsp;</span><span class="vars">$red</span><span>,&nbsp;IMG_ARC_PIE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//画一椭圆弧且填充</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagestring(<span class="vars">$image</span><span>,&nbsp;20,&nbsp;180,&nbsp;130,&nbsp;</span><span class="string">'55.5%'</span><span>,&nbsp;</span><span class="vars">$white</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//水平地画一行字符串,依次是F/X/Y/--数值越大向右、向下</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;imagestring(<span class="vars">$image</span><span>,&nbsp;20,&nbsp;100,&nbsp;200,&nbsp;</span><span class="string">'34.7%'</span><span>,&nbsp;</span><span class="vars">$white</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//水平地画一行字符串,依次是F/X/Y/--数值越大向右、向下</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//向浏览器中输出一个GIF格式的图片</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//header(&quot;Content-type:text/html;charset=utf-8&quot;);&nbsp;//&nbsp;设置页面的编码风格</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;header(<span class="string">'Content-type:image/png'</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//使用头函数告诉浏览器以图像方式处理以下输出--通知浏览器输出的是图像</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;imagepng(<span class="vars">$image</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//向浏览器输出</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;imagedestroy(<span class="vars">$image</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//销毁图像释放资源</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//header(&quot;Content-type:&nbsp;text/html;&nbsp;charset=utf-8&quot;);</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//$str=&quot;&lt;div&gt;'$image'&lt;/div&gt;&quot;;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//echo&nbsp;$str;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>?&gt;&nbsp;&nbsp;</span></li></ol></div>
]]>
</description>
</item>
</channel>
</rss>