<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post/1264/</link>
<title><![CDATA[PHP调试代码]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Sun, 02 Apr 2023 15:04:41 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1264/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>error_reporting(E_ALL);<br/>//禁止把错误输出到页面<br/>ini_set(&#039;display_errors&#039;, 0);<br/>//设置错误信息输出到文件<br/>ini_set(&#039;log_errors&#039;, 1);<br/>//指定错误日志文件名<br/>$error_dir = AMY_ROOT.&#039;/data/log/&#039;;<br/>$error_file = $error_dir . date(&#039;Ymd&#039;).&#039;.log&#039;;<br/>//目录不存在就创建<br/>if (!is_dir($error_dir))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;mkdir($error_dir, 0777, true);<br/>&#125;<br/>//文件不存在就创建之<br/>if(!file_exists($error_file))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$fp = fopen($error_file, &#039;w+&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($fp)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>//设置错误输出文件<br/>ini_set(&quot;error_log&quot;, $error_file);<br/>//程序正常执行逻辑......<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1146/</link>
<title><![CDATA[自动跳转]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Thu, 26 Jul 2018 08:19:11 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1146/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>$p = $ppage+1;<br/>$url = &quot;?ppage=&quot;.$p;<br/>redirect($url) ;<br/><br/><br/><br/>function redirect($url) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo&quot;&lt;script&gt;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo&quot;function redirect() &#123;window.location.replace(&#039;$url&#039;);&#125;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo&quot;setTimeout(&#039;redirect();&#039;, 3000);&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo&quot;&lt;/script&gt;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br/>&#125;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1141/</link>
<title><![CDATA[一个PHP文件搞定支付宝系列之当面付（扫码支付）]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 13 Jun 2018 07:42:24 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1141/</guid> 
<description>
<![CDATA[ 
	网上的很多PHP支付宝支付接入教程都颇为复杂，且需要配置和引入较多的文件，本人通过整理后给出一个单文件版的，希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义。<br/><br/>扫码支付，指用户打开支付宝钱包中的“扫一扫”功能，扫描商家展示在某收银场景下的二维码并进行支付的模式。该模式适用于线下实体店支付、面对面支付等场景。<br/><br/>运行以下php文件代码即可生成一张付款二维码图片，使用支付宝扫一扫即可付款。<br/><br/>一个PHP文件搞定支付宝系列：<a href="https://github.com/dedemao/alipay" target="_blank">https://github.com/dedemao/alipay</a><br/><br/>一个PHP文件搞定微信支付系列：<a href="https://github.com/dedemao/weixinPay" target="_blank">https://github.com/dedemao/weixinPay</a><br/><br/>环境依赖<br/>PHP5.0以上，且需要开启CURL服务、SSL服务。<br/><br/>注意事项<br/>1.文件开头的配置信息必须完善 <br/>2.商户私钥需填写对应签名算法类型的私钥，如何生成密钥参考： <br/>2.1 <a href="https://docs.open.alipay.com/291/105971" target="_blank">https://docs.open.alipay.com/291/105971</a> <br/>2.2 <a href="https://docs.open.alipay.com/200/105310" target="_blank">https://docs.open.alipay.com/200/105310</a><br/><br/>代码<br/><br/><div class="code"><br/>&lt;?php<br/>header(&#039;Content-type:text/html; Charset=utf-8&#039;);<br/>$appid = &#039;xxxxx&#039;;&nbsp;&nbsp;//https://open.alipay.com 账户中心-&gt;密钥管理-&gt;开放平台密钥，填写添加了电脑网站支付的应用的APPID<br/>$notifyUrl = &#039;http://www.xxx.com/alipay/notify.php&#039;;&nbsp;&nbsp;&nbsp;&nbsp; //付款成功后的异步回调地址<br/>$outTradeNo = uniqid();&nbsp;&nbsp;&nbsp;&nbsp; //你自己的商品订单号<br/>$payAmount = 0.01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//付款金额，单位:元<br/>$orderName = &#039;支付测试&#039;;&nbsp;&nbsp;&nbsp;&nbsp;//订单标题<br/>$signType = &#039;RSA2&#039;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //签名算法类型，支持RSA2和RSA，推荐使用RSA2<br/>//商户私钥，填写对应签名算法类型的私钥，如何生成密钥参考：https://docs.open.alipay.com/291/105971和https://docs.open.alipay.com/200/105310<br/>$saPrivateKey=&#039;MIIEpAIBAAKCAQEA1MV+OY6MvGfXPM0MkpjT+FdzGmPOvVmX2wF3gjwQpeHBEUP9jLXhVS32fZ1iXI1e7WUGQ5tvXn28P8190kpOn/c/G5t2CAksUvemvF7uJN/N3Z1HFMdt3omvCd14K05lgcFYz7Z4c+A7ZJF5bPCB6oshjjUmbCY3hibuWzX/1j8AgsoD9lLy1oFqxLj98k5ZrYIhk900gMQs/WJ3A1FC09Dln9fuhBUyjtPHaml+4w+sdkdzxPktxdFrMcI7M7rNEwg25XtST5Z49oFpE84AlXM7+oC9jYvIpTGE00WomsgtakN039ucT/59Bup6pLkO08Rv85UXbqzGTcYAhNHLfQIDAQABAoIBAQCbuPM58s+j8KgB8ty5yiqRPoeaj+O2h4Txn7A02/sfPQvNtCI0w3TpT5twsihULo+EVYTxJCitUn7df2sP5pyGzTEd5njLRtNu4Zvhj+Thjf8grERiu9b4oXI/WRzjLRxzi+uREi40OK+fWi0xgxDCdROY/eNiEdJfV8zpaqsUxG7VdwZIJQ/8d3Mi31OWv30kr9jfEd15DBInGJgSqR+qwrAB4pBSMcW8hL6PYlzoPi1ygceFjRrnbeMG40zt0OUPSexQIgAmFvGqxTl5xo3dFEziGHdfWYsBKZ2M8ubAe+R6LcndxI+o2Hw4TNcC1tDeNMtjw7+h9S5aef5A8uWBAoGBAPxCLWPhUHCYlIXUz0D1SoolZs9WK7Kz1YSWnzqrpegN+foS5/ji93YylGE+KL31TwbnGQLAwknwMX3qTzmkvTovmy8jevXBsCSEFm81q0wG/35e1SKkTXL66RqB2y0xFLdcF3f9s8ZiEclqkYwNSHh0nqzREfIxMMAsj+3n2vHdAoGBANftYkZYrbs4iI/ZcjmBYguYikNfNmrD+Ta6ckOGZqsHfwXJCAz1rF4/XCqVAc9nxuzJR/72qkn9z07uH6qSZCqlZDRkiiKaK2UVqFDB+0abMk/TGHXuMmdvMkyj2jEZxG2rkg0kmg4qYkkg/5tGG1On/2GeZNVPu8JpsFr1pDYhAoGBANr8pCTKC6fDfWP1C3qrtmrY7zhc6RB4d4pjq5UmP5+EypaiZQi2F/dfD1qfuIS3eURXyGmQZtoDDyPtDZvP/ImPnFs+pNbFryD0HfmrEKquhIvyzXoGQknnsgbV5iyEKCTJaII9FxzINAKzZei7+0a+jqUd1kN3Gogp50Sze2ltAoGARaM5Xpaa8RZ6dGocfI9Nn4/Ch5fdZPFvHkdjMoPV+LKiNKtw/Tz+KiclAlasDsfZT+RaY9AJe3NvuHTzoX807swIVR1Xr3EpLaCed+0XrN3AjB34dZAskU87WZw+cjdtMjFzGOoFBSyGJi+OP/WMOp6jo/YBbwoX88tCJROzsgECgYAT8pHHIyPt5Y/5pDb8EDvD3XNES1fBkfZffSoAodsrkeoKgrsKl+9M3rcGX+S9dscyoH0ur3BFTMHtIOOhC5qytt+BhMHIP5mAs4di4u/joQCWQbUyrUggVK5it+6BFgAT+jeB7zTAUtgGpTVFq3kLbV0NZ+XQyEHVlnoJnHYpQg==&#039;;<br/>$aliPay = new AlipayService($appid,$returnUrl,$notifyUrl,$saPrivateKey);<br/>$result = $aliPay-&gt;doPay($payAmount,$outTradeNo,$orderName,$returnUrl,$notifyUrl);<br/>$result = $result&#91;&#039;alipay_trade_precreate_response&#039;&#93;;<br/>if($result&#91;&#039;code&#039;&#93; &amp;&amp; $result&#91;&#039;code&#039;&#93;==&#039;10000&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//生成二维码<br/>&nbsp;&nbsp;&nbsp;&nbsp;$url = &#039;http://pan.baidu.com/share/qrcode?w=300&amp;h=300&amp;url=&#039;.$result&#91;&#039;qr_code&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&lt;img src=&#039;&#123;$url&#125;&#039; style=&#039;width:300px;&#039;&gt;&lt;br&gt;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &#039;二维码内容：&#039;.$result&#91;&#039;qr_code&#039;&#93;;<br/>&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $result&#91;&#039;msg&#039;&#93;.&#039; : &#039;.$result&#91;&#039;sub_msg&#039;&#93;;<br/>&#125;<br/>class AlipayService<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected $appId;<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected $returnUrl;<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected $notifyUrl;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//私钥文件路径<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected $rsaPrivateKeyFilePath;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//私钥值<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected $rsaPrivateKey;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function __construct($appid, $returnUrl, $notifyUrl,$saPrivateKey)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;appId = $appid;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;returnUrl = $returnUrl;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;notifyUrl = $notifyUrl;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;charset = &#039;utf8&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;rsaPrivateKey=$saPrivateKey;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 发起订单<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param float $totalFee 收款总费用 单位元<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $outTradeNo 唯一的订单号<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $orderName 订单名称<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $notifyUrl 支付结果通知url 不要有问号<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $timestamp 订单发起时间<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function doPay($totalFee, $outTradeNo, $orderName, $returnUrl,$notifyUrl)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//请求参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$requestConfigs = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;out_trade_no&#039;=&gt;$outTradeNo,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;total_amount&#039;=&gt;$totalFee, //单位 元<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;subject&#039;=&gt;$orderName,&nbsp;&nbsp;//订单标题<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$commonConfigs = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//公共参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;app_id&#039; =&gt; $this-&gt;appId,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;method&#039; =&gt; &#039;alipay.trade.precreate&#039;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //接口名称<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;format&#039; =&gt; &#039;JSON&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;charset&#039;=&gt;$this-&gt;charset,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;sign_type&#039;=&gt;&#039;RSA2&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;timestamp&#039;=&gt;date(&#039;Y-m-d H:i:s&#039;),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;version&#039;=&gt;&#039;1.0&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;notify_url&#039; =&gt; $notifyUrl,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;biz_content&#039;=&gt;json_encode($requestConfigs),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$commonConfigs&#91;&quot;sign&quot;&#93; = $this-&gt;generateSign($commonConfigs, $commonConfigs&#91;&#039;sign_type&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = $this-&gt;curlPost(&#039;https://openapi.alipay.com/gateway.do&#039;,$commonConfigs);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return json_decode($result,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function generateSign($params, $signType = &quot;RSA&quot;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;sign($this-&gt;getSignContent($params), $signType);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected function sign($data, $signType = &quot;RSA&quot;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$priKey=$this-&gt;rsaPrivateKey;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res = &quot;-----BEGIN RSA PRIVATE KEY-----&#92;n&quot; .<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wordwrap($priKey, 64, &quot;&#92;n&quot;, true) .<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&#92;n-----END RSA PRIVATE KEY-----&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($res) or die(&#039;您使用的私钥格式错误，请检查RSA私钥配置&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&quot;RSA2&quot; == $signType) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openssl_sign($data, $sign, $res, version_compare(PHP_VERSION,&#039;5.4.0&#039;, &#039;&lt;&#039;) ? SHA256 : OPENSSL_ALGO_SHA256); //OPENSSL_ALGO_SHA256是php5.4.8以上版本才支持<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openssl_sign($data, $sign, $res);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign = base64_encode($sign);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $sign;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 校验$value是否非空<br/>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;if not set ,return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;if is null , return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp; **/<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected function checkEmpty($value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!isset($value))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($value === null)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (trim($value) === &quot;&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function getSignContent($params) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ksort($params);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stringToBeSigned = &quot;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($params as $k =&gt; $v) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (false === $this-&gt;checkEmpty($v) &amp;&amp; &quot;@&quot; != substr($v, 0, 1)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 转换成目标字符集<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$v = $this-&gt;characet($v, $this-&gt;charset);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($i == 0) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stringToBeSigned .= &quot;$k&quot; . &quot;=&quot; . &quot;$v&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stringToBeSigned .= &quot;&amp;&quot; . &quot;$k&quot; . &quot;=&quot; . &quot;$v&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset ($k, $v);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $stringToBeSigned;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 转换字符集编码<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param $data<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param $targetCharset<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return string<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;function characet($data, $targetCharset) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($data)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fileType = $this-&gt;charset;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (strcasecmp($fileType, $targetCharset) != 0) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data = mb_convert_encoding($data, $targetCharset, $fileType);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//$data = iconv($fileType, $targetCharset.&#039;//IGNORE&#039;, $data);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $data;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function curlPost($url = &#039;&#039;, $postData = &#039;&#039;, $options = array())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($postData)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$postData = http_build_query($postData);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ch = curl_init();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_URL, $url);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_POST, 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($options)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt_array($ch, $options);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//https请求 不验证证书和host<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data = curl_exec($ch);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_close($ch);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $data;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1125/</link>
<title><![CDATA[PHP 文件内容比对]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 07:13:48 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1125/</guid> 
<description>
<![CDATA[ 
	<a href="attachment.php?fid=94">点击这里下载文件</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1124/</link>
<title><![CDATA[php PDO操作数据库类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 07:12:42 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1124/</guid> 
<description>
<![CDATA[ 
	<a href="attachment.php?fid=93">点击这里下载文件</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1123/</link>
<title><![CDATA[php链接sqlserver类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 04:34:46 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1123/</guid> 
<description>
<![CDATA[ 
	php链接sqlserver类<br/><div class="code"><br/>&lt;?php&nbsp;&nbsp;<br/>class sqlsrv&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;private $error_log = array();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $sql_log = array();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $query_id;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $num_rows;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $conn;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $server=&quot;.&quot;;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $userid=&quot;sa&quot;;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $password=&quot;sa&quot;;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $database=&quot;db&quot;;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;//connection&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function sqlsrv() &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function open()&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn = @sqlsrv_connect($this-&gt;server, array(&#039;UID&#039; =&gt; $this-&gt;userid ,&#039;PWD&#039;=&gt; $this-&gt;password, &#039;Database&#039; =&gt; $this-&gt;database));&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;conn === false) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error_log&#91;&#93; = sqlsrv_errors();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function close()&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlsrv_close($this-&gt;conn);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;//query source&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function query($sql,$params=array(),$open_close=1)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;open();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array=array();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i&lt;count($params);$i++) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(is_array($params&#91;$i&#93;))&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array&#91;$i&#93;=array($this-&gt;convert2gbk($params&#91;$i&#93;&#91;0&#93;),$params&#91;$i&#93;&#91;1&#93;);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&#123;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array&#91;$i&#93; =array($this-&gt;convert2gbk($params&#91;$i&#93;),SQLSRV_PARAM_IN);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stmt = sqlsrv_query($this-&gt;conn, $sql,$array);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;sql_log&#91;&#93; = $sql;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res=false;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($stmt === false) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error_log&#91;&#93; = sqlsrv_errors();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;query_id = $stmt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res=$this-&gt;num_rows = $this-&gt;affectedRows();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;close();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $res;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;//fetch data&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function fetch_all($sql,$params=array(),$open_close=1) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;open();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;query($sql,$params,0);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data = array();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while($row = @sqlsrv_fetch_array($this-&gt;query_id)) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data&#91;&#93; = $row;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach ($data as $key =&gt; $value) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($value as $key2 =&gt; $value2) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@$data&#91;$key&#93;&#91;$key2&#93; = $this-&gt;convert2utf8($value2);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;close();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $data;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// $DB-&gt;count(select&nbsp;&nbsp; *&nbsp;&nbsp; from&nbsp;&nbsp;users)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function fetch_one($sql,$params=array(),$open_close=1)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;open();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;query($sql,$params,0);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@$res= sqlsrv_fetch_array($this-&gt;query_id);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(is_array($res))&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($res as $key =&gt; $value) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@$res&#91;$key&#93; = $this-&gt;convert2utf8($value);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;close();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $res;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// $DB-&gt;count(select&nbsp;&nbsp; count(*)&nbsp;&nbsp; from&nbsp;&nbsp;users)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function count($sql,$params=array(),$open_close=1)&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;open();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$count=$this-&gt;fetch_one($sql,$params,0);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res= $count&#91;0&#93;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($open_close)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;close();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $res;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function affectedRows() &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res=($this-&gt;query_id) ? @sqlsrv_num_rows($this-&gt;query_id) : false;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($res==false)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$res=($this-&gt;query_id) ? @sqlsrv_rows_affected($this-&gt;query_id) : false;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $res;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function convert2utf8($str)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return iconv(&quot;gbk&quot;,&quot;utf-8&quot;,$str);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function convert2gbk($str)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return iconv(&quot;utf-8&quot;,&quot;gbk&quot;,$str);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&#125;&nbsp;&nbsp;<br/>?&gt;&nbsp;&nbsp;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1122/</link>
<title><![CDATA[php mongodb操作类，适合mongodb2.x和mongodb3.x]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:53:53 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1122/</guid> 
<description>
<![CDATA[ 
	php mongodb操作类，适合mongodb2.x和mongodb3.x<br/><div class="code"><br/>&lt;?php<br/>/*** Mongodb类**<br/> examples:&nbsp;&nbsp;&nbsp;&nbsp; <br/>* $mongo = new HMongodb(&quot;127.0.0.1:11223&quot;);&nbsp;&nbsp; <br/>* $mongo-&gt;selectDb(&quot;test_db&quot;);&nbsp;&nbsp; <br/>* 创建索引&nbsp;&nbsp; <br/>* $mongo-&gt;ensureIndex(&quot;test_table&quot;, array(&quot;id&quot;=&gt;1), array(&#039;unique&#039;=&gt;true));&nbsp;&nbsp; <br/>* 获取表的记录&nbsp;&nbsp; <br/>* $mongo-&gt;count(&quot;test_table&quot;);&nbsp;&nbsp; <br/>* 插入记录&nbsp;&nbsp; <br/>* $mongo-&gt;insert(&quot;test_table&quot;, array(&quot;id&quot;=&gt;2, &quot;title&quot;=&gt;&quot;asdqw&quot;));&nbsp;&nbsp; <br/>* 更新记录&nbsp;&nbsp;array(&#039;$set&#039;=&gt;$newdata) 只修改指定字段<br/>* $mongo-&gt;update(&quot;test_table&quot;, array(&quot;id&quot;=&gt;1),array(&quot;id&quot;=&gt;1,&quot;title&quot;=&gt;&quot;bbb&quot;));&nbsp;&nbsp; <br/>* 更新记录-存在时更新，不存在时添加-相当于set&nbsp;&nbsp;<br/>* $mongo-&gt;update(&quot;test_table&quot;, array(&quot;id&quot;=&gt;1),array(&quot;id&quot;=&gt;1,&quot;title&quot;=&gt;&quot;bbb&quot;),array(&quot;upsert&quot;=&gt;1));&nbsp;&nbsp; <br/>* 查找记录&nbsp;&nbsp; <br/>* $mongo-&gt;find(&quot;test_table&quot;, array(&quot;title&quot;=&gt;&quot;asdqw&quot;), array(&quot;start&quot;=&gt;2,&quot;limit&quot;=&gt;2,&quot;sort&quot;=&gt;array(&quot;id&quot;=&gt;1)))&nbsp;&nbsp; <br/>* 查找一条记录&nbsp;&nbsp; <br/>* $mongo-&gt;findOne(&quot;test_table&quot;, array(&quot;id&quot;=&gt;1));&nbsp;&nbsp; <br/>* 删除记录&nbsp;&nbsp; <br/>* $mongo-&gt;remove(&quot;ttt&quot;, array(&quot;title&quot;=&gt;&quot;bbb&quot;));&nbsp;&nbsp; <br/>* 仅删除一条记录&nbsp;&nbsp; <br/>* $mongo-&gt;remove(&quot;ttt&quot;, array(&quot;title&quot;=&gt;&quot;bbb&quot;), array(&quot;justOne&quot;=&gt;1));&nbsp;&nbsp; <br/>* 获取Mongo操作的错误信息&nbsp;&nbsp; <br/>* $mongo-&gt;getError();&nbsp;&nbsp; <br/>*/&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/><br/>class HMongodb &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;public $_idType=1;//主键类型 1 string 0 obj<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//Mongodb连接&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;var $mongo;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;var $curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;var $curr_table_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;var $error;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 构造函数&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 支持传入多个mongo_server(1.一个出问题时连接其它的server 2.自动将查询均匀分发到不同server)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $mongo_server:数组或字符串-array(&quot;127.0.0.1:1111&quot;, &quot;127.0.0.1:2222&quot;)-&quot;127.0.0.1:1111&quot;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $connect:初始化mongo对象时是否连接，默认连接&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $auto_balance:是否自动做负载均衡，默认是&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：mongo object&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function __construct($mongo_server, $connect=true, $auto_balance=true)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($mongo_server))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongo_server_num = count($mongo_server);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($mongo_server_num &gt; 1 &amp;&amp; $auto_balance)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$prior_server_num = rand(1, $mongo_server_num);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rand_keys = array_rand($mongo_server,$mongo_server_num);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongo_server_str = $mongo_server&#91;$prior_server_num-1&#93;;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($rand_keys as $key)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($key != $prior_server_num - 1)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongo_server_str .= &#039;,&#039; . $mongo_server&#91;$key&#93;;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongo_server_str = implode(&#039;,&#039;, $mongo_server);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongo_server_str = trim($mongo_server); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//$config_arr=explode(&#039;/&#039;,$mongo_server);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//$this-&gt;curr_db_name = array_pop($config_arr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$last_index=strrpos($mongo_server_str,&#039;/&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$db_name=substr($mongo_server_str,$last_index+1,strlen($mongo_server_str));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;curr_db_name = $db_name;//获取dbname<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//print_r($db_name);exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;mongo = new MongoClient($mongo_server, array(&#039;connect&#039;=&gt;$connect));&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoConnectionException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function getInstance($mongo_server, $flag=array())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static $mongodb_arr;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (empty($flag&#91;&#039;tag&#039;&#93;))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$flag&#91;&#039;tag&#039;&#93; = &#039;default&#039;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isset($flag&#91;&#039;force&#039;&#93;) &amp;&amp; $flag&#91;&#039;force&#039;&#93; == true)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongo = new HMongodb($mongo_server);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (empty($mongodb_arr&#91;$flag&#91;&#039;tag&#039;&#93;&#93;))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongodb_arr&#91;$flag&#91;&#039;tag&#039;&#93;&#93; = $mongo;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $mongo;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (isset($mongodb_arr&#91;$flag&#91;&#039;tag&#039;&#93;&#93;) &amp;&amp; is_resource($mongodb_arr&#91;$flag&#91;&#039;tag&#039;&#93;&#93;))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $mongodb_arr&#91;$flag&#91;&#039;tag&#039;&#93;&#93;;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongo = new HMongodb($mongo_server);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mongodb_arr&#91;$flag&#91;&#039;tag&#039;&#93;&#93; = $mongo;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $mongo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 连接mongodb server&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：无&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：true&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function connect()&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;mongo-&gt;connect();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoConnectionException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* select db&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：$dbname&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：无&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function selectDb($dbname)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;curr_db_name = $dbname;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 创建索引：如索引已存在，则返回。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $table_name:表名&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $index:索引-array(&quot;id&quot;=&gt;1)-在id字段建立升序索引&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $index_param:其它条件-是否唯一索引等&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：true&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function ensureIndex($table_name, $index, $index_param=array())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$index_param&#91;&#039;safe&#039;&#93; = 1;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;ensureIndex($index, $index_param);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoCursorException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 插入记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $table_name:表名&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $record:记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：true&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function insert($table_name, $record)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;insert($record, array(&#039;safe&#039;=&gt;true));&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoCursorException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 查询表的记录数&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $table_name:表名&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：表的记录数&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function count($table_name,$query_condition=array())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;find($query_condition)-&gt;count();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;//$newdata存在有_id则更新 不存在则插入<br/>&nbsp;&nbsp;function save($table_name, $newdata) &#123;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_idType &amp;&amp; $newdata&#91;&#039;_id&#039;&#93;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$newdata&#91;&#039;_id&#039;&#93;=new MongoId($newdata&#91;&#039;_id&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;save($newdata);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 更新记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $table_name:表名&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $condition:更新条件&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $newdata:新的数据记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $options:更新选择-upsert/multiple&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：true&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function update($table_name, $condition, $newdata, $options=array())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp; if($this-&gt;_idType &amp;&amp; $condition&#91;&#039;_id&#039;&#93;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$condition&#91;&#039;_id&#039;&#93;=new MongoId($condition&#91;&#039;_id&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$options&#91;&#039;safe&#039;&#93; = 1;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!isset($options&#91;&#039;multiple&#039;&#93;))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$options&#91;&#039;multiple&#039;&#93; = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;update($condition, $newdata, $options);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoCursorException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 删除记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $table_name:表名&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $condition:删除条件&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $options:删除选择-justOne&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：true&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function remove($table_name, $condition, $options=array())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_idType &amp;&amp; $condition&#91;&#039;_id&#039;&#93;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$condition&#91;&#039;_id&#039;&#93;=new MongoId($condition&#91;&#039;_id&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$options&#91;&#039;safe&#039;&#93; = 1;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;remove($condition, $options);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoCursorException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 查找记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $table_name:表名&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $query_condition:字段查找条件&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $result_condition:查询结果限制条件-limit/sort等&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $fields:获取字段&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：记录集&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function find($table_name, $query_condition, $result_condition=array(), $fields=array())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor = $this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;find($query_condition, $fields);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($result_condition&#91;&#039;start&#039;&#93;))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;skip($result_condition&#91;&#039;start&#039;&#93;);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($result_condition&#91;&#039;limit&#039;&#93;))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;limit($result_condition&#91;&#039;limit&#039;&#93;);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($result_condition&#91;&#039;sort&#039;&#93;))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;sort($result_condition&#91;&#039;sort&#039;&#93;);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = array();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ($cursor-&gt;hasNext())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row= $cursor-&gt;getNext();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//print_r($cursor-&gt;getNext());exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_idType &amp;&amp; is_object($row&#91;&#039;_id&#039;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row&#91;&#039;_id&#039;&#93;=$row&#91;&#039;_id&#039;&#93;-&gt;__toString();//转换字符串<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&#91;&#93; =$row;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoConnectionException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (MongoCursorTimeoutException $e)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;error = $e-&gt;getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $result;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 查找一条记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $table_name:表名&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $condition:查找条件&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* $fields:获取字段&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 成功：一条记录&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 失败：false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function findOne($table_name, $condition, $fields=array())&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_idType &amp;&amp; $condition&#91;&#039;_id&#039;&#93;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$condition&#91;&#039;_id&#039;&#93;=new MongoId($condition&#91;&#039;_id&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row=$this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;findOne($condition, $fields);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_idType &amp;&amp; is_object($row&#91;&#039;_id&#039;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row&#91;&#039;_id&#039;&#93;=$row&#91;&#039;_id&#039;&#93;-&gt;__toString();//转换字符串<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $row;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 获取当前错误信息&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 参数：无&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;* 返回值：当前错误信息&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;function getError()&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;error;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;//返回原生mongodb collection集合对象<br/>&nbsp;&nbsp;function getCollection($table_name)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;mongo-&gt;$dbname-&gt;$table_name;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;//分组统计<br/>&nbsp;&nbsp;function group($table_name,$keys,$initial,$reduce,$condition)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$dbname = $this-&gt;curr_db_name;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$g = $this-&gt;mongo-&gt;$dbname-&gt;$table_name-&gt;group($keys, $initial, $reduce,$condition); <br/>&nbsp;&nbsp;&nbsp;&nbsp;return $g;<br/>&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>&#125;&nbsp;&nbsp;&nbsp;&nbsp; <br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1121/</link>
<title><![CDATA[php 通用redis类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:47:33 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1121/</guid> 
<description>
<![CDATA[ 
	php 通用redis类<br/><a href="attachment.php?fid=92">点击这里下载文件</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1120/</link>
<title><![CDATA[Mongodb PHP封装类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:46:05 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1120/</guid> 
<description>
<![CDATA[ 
	Mongodb PHP封装类<br/><div class="code"><br/>&lt;?php<br/>/**<br/>* Mongodb 基本操作API，支持基本类似关系统型数据库的操作接口<br/>*<br/>* @version 1.0<br/> * &#91;说明&#93;<br/> *<br/> * 1：该版本API实现了 Mongodb 中最基本的插入/修改/查询/删除操作的封装<br/> * 2：其它更高级的操作可通过 $this-&gt;getMongo() 得到原生的对象，更多API请自行查阅 Mongo PHP手册,后续版本将会对增加更多的原生API封装<br/> * 3：该类所有API接口中的 $query 查询参数的使用请以下有关 &#91;查询条件说明文档&#93;<br/> * 4: 如果要存储中文字符，则一定要使用 utf8 的编码．<br/> * 5：有了本类接口基本可以按关系型数据库的概念完成Mongodb的大部分开发操作。<br/> *<br/> * &#91;查询条件说明文档&#93;<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;1)<br/> * 等同：where id=1<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;1,&#039;num&#039;=&gt;10)<br/> * 等同：where id=1 and num=10<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&gt;&#039;)=&gt;5))<br/> * 等同：where id&gt;5<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;!=&#039;)=&gt;5))<br/> * 等同：where id!=5<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&gt;&#039;)=&gt;5, $mongo-&gt;cmd(&#039;&lt;&#039;)=&gt;10))<br/> * 等同：where id&gt;5 and id&lt;10<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;in&#039;)=&gt;array(2,5,6)))<br/> * 等同：where id in (2,5,6)<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;%&#039;)=&gt;array(2,1)))<br/> * 等同：where id % 2 = 1<br/> *<br/> * 参数：array($mongo-&gt;cmd(&#039;or&#039;) =&gt; array( array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&gt;&#039;)=&gt;5)), array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&lt;&#039;)=&gt;10)) ) )<br/> * 等同：where id&gt;5 or id&lt;10<br/> *<br/> * 参数：array(&#039;username&#039; =&gt; new mongoRegex(&quot;/yhp.*/&quot;)) <br/> * 等同 where&nbsp;&nbsp;username&nbsp;&nbsp;like &quot;%yhp%&quot;<br/> **/<br/>class Library_Mongodb &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * Mongodb 对象句柄<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var object Mongo<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_mongo = null;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 当前选择的数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var object MongoDB<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_db = null;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 修改器命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var string<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_cmd = &#039;$&#039;;<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 调试模式 TRUE 打开 FALSE 关闭<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;const DEBUG = TRUE;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 查询条件映射关系<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_condMap = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&lt;&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;lt&#039;, // id &gt; 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&lt;=&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;lte&#039;, // id &lt;= 10<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&gt;&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;gt&#039;, // id &gt; 5<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&gt;=&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;gte&#039;, // id &gt;= 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;!=&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;ne&#039;, // id != 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;%&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;mod&#039;, // id % 4 = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;in&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;in&#039;, // id in (1,2,3,4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;notin&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;nin&#039;,// id not in (1,2,3,4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;or&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;or&#039;, // id=1 or id=2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;not&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;not&#039;, // !(id=1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 构造函数<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $config 服务器配置,默认为:<br/>&nbsp;&nbsp;&nbsp;&nbsp; * array(<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;host&#039;=&gt;&#039;localhost&#039;, // 主机名或IP地址<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;port&#039;=&gt;27017, // 端口<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;cmd&#039;=&gt;&#039;$&#039;, // 修改器命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; * )<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function __construct($config = array(&#039;host&#039; =&gt; &#039;xxx&#039;, &#039;port&#039; =&gt; 27017, &#039;username&#039; =&gt; &#039;xxx&#039;, &#039;password&#039; =&gt; &#039;xxx&#039;, &#039;db&#039; =&gt; &#039;xxx&#039;,&nbsp;&nbsp;&#039;cmd&#039; =&gt; &#039;$&#039;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$server = sprintf(&quot;mongodb://%s:%s@%s:%s/%s&quot;, $config&#91;&#039;username&#039;&#93;, $config&#91;&#039;password&#039;&#93;, $config&#91;&#039;host&#039;&#93;, $config&#91;&#039;port&#039;&#93;, $config&#91;&#039;db&#039;&#93;);<br/><br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;connect&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_mongo = new MongoClient($server, array(&#039;connect&#039;=&gt;true));// 立即连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;catch (MongoConnectionException $e)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(self::DEBUG) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $e-&gt;getMessage();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;selectDB($config&#91;&#039;db&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!isset($config&#91;&#039;cmd&#039;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_cmd = ini_get(&#039;mongo.cmd&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_cmd == &#039;&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_cmd = &#039;$&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* ==================================== 基本操作接口API　================================= */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 向集合(表)中插入新文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1:类似mysql中的: insert into $colName set id=1,name=&#039;name1&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $sets 数据,如: array(&#039;id&#039;=&gt;1,&#039;name&#039;=&gt;&#039;name1&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全操作 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function insert($colName, $sets, $safe=false, $fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col-&gt;insert($sets,array(&#039;w&#039;=&gt;$safe,&#039;fsync&#039;=&gt;$fsync));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;catch (MongoCursorException $e)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 保存文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1:如果 $sets 中有字段 &quot;_id&quot; 的话，则更新对应的文档；否则插入新文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $sets 数据,如: array(&#039;id&#039;=&gt;1,&#039;name&#039;=&gt;&#039;name1&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全操作 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function save($colName, $sets, $safe=false, $fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sets = $this-&gt;_parseId($sets);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = $this-&gt;_getCol($colName)-&gt;save($sets,array(&#039;w&#039;=&gt;$safe,&#039;fsync&#039;=&gt;$fsync));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $ret;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 删除集合中的文档记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1：类似mysql中的: delete from $colName where id=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,如果为空数组的话，则会删除所有记录．具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $delAll 是否删除所以条例查询的记录,默认为 true,当为 false是，类似效果 delete from tab where id=1 limit 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全操作 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function delete($colName,$query=array(),$delAll=true,$safe=false,$fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 删除选项<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$options = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;justOne&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;!$delAll,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;w&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$safe,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;fsync&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$fsync,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $col-&gt;remove($query,$options);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 删除整个集合<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1：集合中的索引也会被删除<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function dropCol($colName)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_getCol($colName)-&gt;drop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 更新集合文档记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明:<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1：类似mysql中的: update $colName set name=&#039;mongo&#039; where id=10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $newDoc 要更新的文档记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,如果为空数组则更新所有记录．具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $option 操作选项,可选择项如下；<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;set&#039;：只修改指定的字段（默认值,如果这个键不存在，则创建它。存在则更新）.<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例: update(&#039;user&#039;, array(&#039;name&#039;=&gt;&#039;mongo&#039;), array(&#039;id&#039;=&gt;10));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似: update user set name=&#039;mongo&#039; where id=10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;inc&#039;：将指定的字段累加/减(如果值为负数则是相减,不存在键则创建。字段类型一定要是数字)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;num&#039;=&gt;1), array(&#039;id&#039;=&gt;10), &#039;inc&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似: update user set num=num+1 where id=10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;push&#039;：将文档添加到指定键中（数组），如果键不存在则会自动创建，存在则添加到该键的尾端。<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;comm&#039;=&gt;array(&#039;commid&#039;=&gt;1,&#039;title&#039;=&gt;&#039;title1&#039;)), array(&#039;id&#039;=&gt;1), &#039;push&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：为 id=1 的记录添加一个 comm 的评论字段，该字段对应一个 array(&#039;commid&#039;=&gt;1,&#039;title&#039;=&gt;&#039;title1&#039;) 的新文档。<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;pop&#039;:将指定键中的文档删除（数组）<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;comm&#039;=&gt;array(&#039;commid&#039;=&gt;1)), array(&#039;id&#039;=&gt;1), &#039;pop&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：删除 id=1 的记录中 comm 对应的文档集合中 &#039;commid&#039;=&gt;1 对应的文档.<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;unset&#039;:在文档中删除指定的键<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;name&#039;=&gt;1), array(&#039;id&#039;=&gt;1), &#039;unset&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说: 将 user 集合中将 id=1 对应的文档中的 name 字段删除<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;pull&#039;:删除文档中匹配其值的键<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;name&#039;=&gt;&#039;youname&#039;), array(&#039;id&#039;=&gt;1), &#039;pull&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：将 user 集合中将 id=1 对应的文档中的 name=&#039;youname&#039; 的字段删除<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;addToSet&#039;:如果值不存在就添加（避免重复添加）<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;names&#039;=&gt;&#039;youname&#039;), array(&#039;id&#039;=&gt;1), &#039;addToSet&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：向 user 集合中 id=1 对应的文档中的 names 字段添加 &#039;youname&#039; 这个值(不存在时才添加)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;replace&#039;：用 $newDoc 新文档替换 $query 所找到的文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;newid&#039;=&gt;1,&#039;newnames&#039;=&gt;&#039;name1&#039;), array(&#039;id&#039;=&gt;1), &#039;replace&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：将 user 集合中 id=1 对应的文档用 array(&#039;newid&#039;=&gt;1,&#039;newnames&#039;=&gt;&#039;name1&#039;) 的新文档替换<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $upAll 是否更新找到的所有记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $upsert 如果查询条件不存在时，是否以查询条件和要更新的字段一起新建一个集合<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全删除 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function update($colName,$newDoc,$query=array(),$option=&#039;set&#039;,$upAll=true,$upsert=false,$safe=false,$fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 重新组合新文档<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($option != &#039;replace&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$newDoc = array($this-&gt;cmd($option) =&gt; $newDoc);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 更新条件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$options = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;upsert&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$upsert,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;multiple&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$upAll,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;w&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$safe,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;fsync&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$fsync,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $col-&gt;update($query,$newDoc,$options);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 查询文档集,返回二维数组<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明:<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1:类似mysql中的 select * from table<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select * from user;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1),array(&#039;num&#039;=&gt;1));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1 order by num asc;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1),array(&#039;num&#039;=&gt;1),10);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1 order by num asc limit 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1),array(&#039;num&#039;=&gt;1),10,2);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1 order by num asc limit 2,10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $fields 结果集返回的字段, array():表示返回所有字段 array(&#039;id&#039;,&#039;name&#039;):表示只返回字段 &quot;id,name&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $sort 排序字段, array(&#039;id&#039;=&gt;1):表示按id字段升序 array(&#039;id&#039;=&gt;-1):表示按id字段降序 array(&#039;id&#039;=&gt;1, &#039;age&#039;=&gt;-1):表示按id升序后再按age降序<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $limit 取多少条记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $skip 跳过多少条(从多少条开始)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function select($colName,$query=array(),$fields=array(),$sort=array(),$limit=0,$skip=0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 结果集偏历<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor&nbsp;&nbsp;= $col-&gt;find($query,$fields);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 排序<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($sort)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;sort($sort);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 跳过记录数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($skip &gt; 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;skip($skip);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 取多少行记录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($limit &gt; 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;limit($limit);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach($cursor&nbsp;&nbsp;as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&#91;&#93; = $this-&gt;_parseArr($row);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $result;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 统计文档记录数<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $limit 取多少条记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $skip 跳过多少条<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return unknown<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function count($colName,$query=array(),$limit=0,$skip=0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_getCol($colName)-&gt;count($query,$limit,$skip);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回集合中的一条记录(一维数组)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $fields 结果集返回的字段, array():表示返回所有字段 array(&#039;id&#039;,&#039;name&#039;):表示只返回字段 &quot;id,name&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchRow($colName,$query=array(), $fields=array())&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 处理结果集<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_parseArr($col-&gt;findOne($query,$fields));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回符合条件的文档中字段的值<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $fields 要取其值的字段,默认为 &quot;_id&quot; 字段,类似mysql中的自增主键<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return mixed<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchOne($colName,$query=array(), $fields=&#039;_id&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = $this-&gt;fetchRow($colName,$query,array($fields));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return isset($ret&#91;$fields&#93;) ? $ret&#91;$fields&#93; : false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回查询文档集合集中指定字段的值(一维数组)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $fields 要取其值的字段,默认为 &quot;_id&quot; 字段,类似mysql中的自增主键<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchCol($colName,$query=array(), $fields=&#039;_id&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$list = $this-&gt;select($colName,$query,array($fields));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($list as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&#91;&#93; = $row&#91;$fields&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $result;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回指定下标的查询文档集合(二维数组)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $fields 要取其值的字段,默认为 &quot;_id&quot; 字段,类似mysql中的自增主键<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchAssoc($colName,$query=array(), $fields=&#039;_id&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$list = $this-&gt;select($colName,$query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($list as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key = $row&#91;$fields&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&#91;&#93;&#91;$key&#93; = $row;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $result;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* ==================================== 辅助操作接口API　================================= */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回命令或命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $option 命令，如果为空时则返回命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return string<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function cmd($option=&#039;&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 只返回命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($option == &#039;&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_cmd;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 如果是操作符<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset($this-&gt;_condMap&#91;$option&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$option = $this-&gt;_condMap&#91;$option&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_cmd.$option;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 选择或创建数据库(注意：新创建的数据库如果在关闭连接前没有写入数据将会被自动删除)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $dbname 数据库名<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function selectDB($dbname)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_db = $this-&gt;_mongo-&gt;selectDB($dbname);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 得到所有的数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $onlyName 是否只返回数据库名的数组<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function allDB($onlyName=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ary = $this-&gt;_mongo-&gt;listDBs();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($onlyName)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($ary&#91;&#039;databases&#039;&#93; as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&#91;&#93; = $row&#91;&#039;name&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $ret;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $ary;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 删除数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function dropDB($dbname)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_mongo-&gt;dropDB($dbname);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 关闭连接<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function close()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_mongo-&gt;close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 得到 Mongo 原生对象，进行其它更高级的操作，详细请看PHP手册<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function getMongo()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_mongo;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回最后的错误信息<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function getError()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_db-&gt;lastError();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* ======================= 以下为私有方法 ====================== */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 解析数据组中的&#039;_id&#039;字段(如果有的话)<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function _parseId($arr)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset($arr&#91;&#039;_id&#039;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr&#91;&#039;_id&#039;&#93; = new MongoId($arr&#91;&#039;_id&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $arr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function _getCol($colName)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_db-&gt;selectCollection($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 解析数组中的&quot;_id&quot;并且返回<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function _parseArr($arr)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!empty($arr)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = (array)$arr&#91;&#039;_id&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr&#91;&#039;_id&#039;&#93; = $ret&#91;&#039;$id&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $arr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;//End Class<br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1119/</link>
<title><![CDATA[PHP生成excel和word]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:40:38 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1119/</guid> 
<description>
<![CDATA[ 
	PHP生成excel和word<br/><div class="code"><br/>&lt;?php&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/***<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 生成excle文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;***/<br/>&nbsp;&nbsp;&nbsp;&nbsp;$time = time(); <br/>&nbsp;&nbsp;&nbsp;&nbsp;$filename = date(&quot;Y年m月d日h点m分s秒&quot;, $time).&#039;问卷数据&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$rows =&nbsp;&nbsp;Sp_Looks_Vote::downvote();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$file = $filename.&quot;.csv&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;Content-Description: File Transfer&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;Content-Type: application/octet-stream&#039;);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;Content-Disposition: attachment; filename=&#039;.basename($file));<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;Content-Transfer-Encoding: binary&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;Expires: 0&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;Cache-Control: must-revalidate, post-check=0, pre-check=0&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;Pragma: public&#039;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$tabletitle .= &quot;购买地址,常常购买,喜欢模特,内容如何,印象如何,是否购买,感觉如何,购买方式,购买方式建议,吸引点,改进建议&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$conter = iconv(&#039;utf-8&#039;,&#039;gbk&#039;,$tabletitle).&quot;&#92;n&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $conter;die;<br/><br/><br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/***<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 生成word文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;***/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&quot;Content-Type:&nbsp;&nbsp; application/msword&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&quot;Content-Disposition:&nbsp;&nbsp; attachment;&nbsp;&nbsp; filename=doc.doc&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&quot;Pragma:&nbsp;&nbsp; no-cache&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&quot;Expires:&nbsp;&nbsp; 0&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$output&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp; &#039;&lt;table border=&quot;1&quot; cellspacing=&quot;2&quot; cellpadding=&quot;2&quot;&nbsp;&nbsp;width=&quot;90%&quot; align=&quot;center&quot;&gt;&#039;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$output&nbsp;&nbsp; .=&nbsp;&nbsp; &#039;&lt;tr bgcolor=&quot;#cccccc&quot;&gt;&lt;td&nbsp;&nbsp; align=&quot;center&quot;&gt;图片&lt;/td&gt;&lt;/tr&gt;&#039;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$output&nbsp;&nbsp; .=&nbsp;&nbsp; &#039;&lt;tr bgcolor=&quot;#f6f7fa&quot;&gt;&lt;td&gt;&lt;span style=&quot;color:#FF0000;&quot;&gt;&lt;strong&gt;下面是一张图片&lt;/strong&gt;&lt;/span&amp; gt;&lt;/td&gt;&lt;/tr&gt;&#039;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$output&nbsp;&nbsp; .=&nbsp;&nbsp; &#039;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;http://zi.csdn.net/48260_2.gif&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&#039;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$output&nbsp;&nbsp; .=&nbsp;&nbsp; &#039;&lt;/table&gt;&#039;;&nbsp;&nbsp;<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&nbsp; $output;&nbsp;&nbsp; <br/><br/><br/><br/>&nbsp;&nbsp;?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1118/</link>
<title><![CDATA[伪造来源采集http.php]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:22:50 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1118/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/>&nbsp;&nbsp;&nbsp;&nbsp;function http($url)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ch = curl_init();&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$curlurl = $url;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$referurl = $url;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ip=mt_rand(11, 191).&quot;.&quot;.mt_rand(0, 240).&quot;.&quot;.mt_rand(1, 240).&quot;.&quot;.mt_rand(1, 240);&nbsp;&nbsp; //随机ip&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$agentarry=&#91;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PC端的UserAgent&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;safari 5.1 – MAC&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;safari 5.1 – Windows&quot;=&gt;&quot;Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Firefox 38esr&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE 11&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE 9.0&quot;=&gt;&quot;Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE 8.0&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE 7.0&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE 6.0&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Firefox 4.0.1 – MAC&quot;=&gt;&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Firefox 4.0.1 – Windows&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Opera 11.11 – MAC&quot;=&gt;&quot;Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Opera 11.11 – Windows&quot;=&gt;&quot;Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Chrome 17.0 – MAC&quot;=&gt;&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;傲游（Maxthon）&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;腾讯TT&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;世界之窗（The World） 2.x&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;世界之窗（The World） 3.x&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;360浏览器&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;搜狗浏览器 1.x&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Avant&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Green Browser&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//移动端口&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;safari iOS 4.33 – iPhone&quot;=&gt;&quot;Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;safari iOS 4.33 – iPod Touch&quot;=&gt;&quot;Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;safari iOS 4.33 – iPad&quot;=&gt;&quot;Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Android N1&quot;=&gt;&quot;Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Android QQ浏览器 For android&quot;=&gt;&quot;MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Android Opera Mobile&quot;=&gt;&quot;Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Android Pad Moto Xoom&quot;=&gt;&quot;Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;BlackBerry&quot;=&gt;&quot;Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;WebOS HP Touchpad&quot;=&gt;&quot;Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;UC标准&quot;=&gt;&quot;NOKIA5700/ UCWEB7.0.2.37/28/999&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;UCOpenwave&quot;=&gt;&quot;Openwave/ UCWEB7.0.2.37/28/999&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;UC Opera&quot;=&gt;&quot;Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;微信内置浏览器&quot;=&gt;&quot;Mozilla/5.0 (Linux; Android 6.0; 1503-M02 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036558 Safari/537.36 MicroMessenger/6.3.25.861 NetType/WIFI Language/zh_CN&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &quot;&quot;=&gt;&quot;&quot;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#93;;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//$useragent=&quot;Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11&quot;;&nbsp;&nbsp;//要得到类似这样useranget 可以自定义&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$useragent=$agentarry&#91;array_rand($agentarry,1)&#93;;&nbsp;&nbsp;//随机浏览器useragent&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$header = array(&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;CLIENT-IP:&#039;.$ip,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;X-FORWARDED-FOR:&#039;.$ip,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;//构造ip&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_URL, $curlurl); //要抓取的网址&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_HTTPHEADER, $header);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_REFERER, $referurl);&nbsp;&nbsp;//模拟来源网址&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_USERAGENT, $useragent); //模拟常用浏览器的useragent&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$page_content = curl_exec($ch);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_close($ch);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $page_content;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&#125;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1117/</link>
<title><![CDATA[PHP的FTP操作类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:20:08 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1117/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/>/**<br/> * 作用：FTP操作类( 拷贝、移动、删除文件/创建目录 )<br/> */<br/>class class_ftp<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public $off; // 返回操作状态(成功/失败)<br/>&nbsp;&nbsp;&nbsp;&nbsp;public $conn_id; // FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_HOST=&#039;*.*.*.*&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_PORT=&#039;21&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_USER=&#039;*******&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_PASS=&#039;*******&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 方法：FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_HOST -- FTP主机<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_PORT -- 端口<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_USER -- 用户名<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_PASS -- 密码<br/>&nbsp;&nbsp;&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;&nbsp;&nbsp;function __construct()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn_id = @ftp_connect(self::FTP_HOST,self::FTP_PORT) or die(&quot;FTP服务器连接失败&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;@ftp_login($this-&gt;conn_id,self::FTP_USER,self::FTP_PASS) or die(&quot;FTP服务器登陆失败&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;@ftp_pasv($this-&gt;conn_id,1); // 打开被动模拟<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 方法：上传文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @path -- 本地路径<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @newpath -- 上传路径<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @type -- 若目标目录不存在则新建<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function up_file($path,$newpath,$type=true)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; var_dump($this-&gt;conn_id);exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if($type) $this-&gt;dir_mkdirs($newpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_put($this-&gt;conn_id,$newpath,$path,FTP_BINARY);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件上传失败，请检查权限及路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：移动文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 原路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @newpath -- 新路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @type -- 若目标目录不存在则新建<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function move_file($path,$newpath,$type=true)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if($type) $this-&gt;dir_mkdirs($newpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_rename($this-&gt;conn_id,$path,$newpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件移动失败，请检查权限及原路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：复制文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：由于FTP无复制命令,本方法变通操作为：下载后再上传到新的路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 原路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @newpath -- 新路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @type -- 若目标目录不存在则新建<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function copy_file($path,$newpath,$type=true)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $downpath = &quot;c:/tmp.dat&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_get($this-&gt;conn_id,$downpath,$path,FTP_BINARY);// 下载<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件复制失败，请检查权限及原路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;up_file($downpath,$newpath,$type);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：删除文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function del_file($path)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_delete($this-&gt;conn_id,$path);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件删除失败，请检查权限及路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：生成目录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function dir_mkdirs($path)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $path_arr = explode(&#039;/&#039;,$path); // 取目录数组<br/>&nbsp;&nbsp;&nbsp;&nbsp; $file_name = array_pop($path_arr); // 弹出文件名<br/>&nbsp;&nbsp;&nbsp;&nbsp; $path_div = count($path_arr); // 取层数<br/>&nbsp;&nbsp;&nbsp;&nbsp; foreach($path_arr as $val) // 创建目录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(@ftp_chdir($this-&gt;conn_id,$val) == FALSE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tmp = @ftp_mkdir($this-&gt;conn_id,$val);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($tmp == FALSE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;目录创建失败，请检查权限及路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; @ftp_chdir($this-&gt;conn_id,$val);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; for($i=1;$i=$path_div;$i++) // 回退到根<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; @ftp_cdup($this-&gt;conn_id);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：关闭FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function close()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @ftp_close($this-&gt;conn_id);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;// class class_ftp end<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; /************************************** 测试 ***********************************<br/>&nbsp;&nbsp;&nbsp;&nbsp; $ftp = new class_ftp(&#039;192.168.100.143&#039;,21,&#039;user&#039;,&#039;pwd&#039;); // 打开FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;up_file(&#039;aa.txt&#039;,&#039;a/b/c/cc.txt&#039;); // 上传文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;move_file(&#039;a/b/c/cc.txt&#039;,&#039;a/cc.txt&#039;); // 移动文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;copy_file(&#039;a/cc.txt&#039;,&#039;a/b/dd.txt&#039;); // 复制文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;del_file(&#039;a/b/dd.txt&#039;); // 删除文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; $ftp-&gt;close(); // 关闭FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp; ******************************************************************************/<br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1116/</link>
<title><![CDATA[php记录所有post,get,cookie以及IP地址,来路,访问网址等]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:18:17 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1116/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/>header(&quot;Content-type:text/html;charset=utf-8&quot;);<br/><br/><br/>/**<br/> * 程序说明:php记录所有post,get,cookie以及IP地址,来路,访问网址<br/> * @author&nbsp;&nbsp;&nbsp;&nbsp;yujianyue &lt;admin@ewuyi.net&gt;<br/> * @homepage&nbsp;&nbsp;http://12391.net<br/> */<br/><br/><br/>//记录得到的<br/>function slog($rr,$StrValue) &#123;<br/>&nbsp;&nbsp;$logfile = fopen($rr,&#039;a+&#039;);<br/>&nbsp;&nbsp;fwrite($logfile,&quot;&#92;r&#92;n&quot;.$StrValue);<br/>&nbsp;&nbsp;fclose($logfile);<br/>&#125;<br/><br/>function arraforeach($arr) &#123;<br/>&nbsp;&nbsp;static $str;<br/>&nbsp;&nbsp;static $keystr;<br/>&nbsp;&nbsp;if (!is_array($arr)) &#123;<br/>&nbsp;&nbsp;return $arr;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;foreach ($arr as $key =&gt; $val ) &#123;<br/>&nbsp;&nbsp;$keystr=$keystr.$key;<br/>&nbsp;&nbsp;if (is_array($val)) &#123;<br/>&nbsp;&nbsp;arraforeach($val);<br/>&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;$str&#91;&#93; = $val.$keystr;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return implode($str);<br/>&#125;<br/><br/>function rlog($StrKey,$StrValue,$ArrReq,$method) &#123;<br/>&nbsp;&nbsp;$StrValue=arraforeach($StrValue);<br/>&nbsp;&nbsp;return&nbsp;&nbsp;&quot;&lt;tr&gt;&lt;td&gt;$method&lt;/td&gt;&lt;td&gt;$StrKey&lt;/td&gt;&lt;td&gt;$StrValue&lt;/td&gt;&lt;/tr&gt;&#92;r&#92;n&quot;;<br/>&#125;<br/><br/>$linev = &quot;&lt;h1&gt;&quot;.date(&#039;Y-m-d H:i:s&#039;).&quot;&lt;/h1&gt;&#92;r&#92;n&quot;;<br/>$linev .= &quot;&lt;table&gt;&#92;r&#92;n&quot;;<br/><br/>//逐个GET<br/>&nbsp;&nbsp;foreach($_GET as $key=&gt;$value) &#123;<br/>$linev .= &quot;&#92;r&#92;n&quot;.rlog($key,$value,$getfilter,&quot;GET&quot;);<br/>&nbsp;&nbsp;&#125;<br/><br/>//逐个POST<br/>&nbsp;&nbsp;foreach($_POST as $key=&gt;$value) &#123;<br/>$linev .= &quot;&#92;r&#92;n&quot;.rlog($key,$value,$postfilter,&quot;POST&quot;);<br/>&nbsp;&nbsp;&#125;<br/><br/>//逐个COOKIE<br/>&nbsp;&nbsp;foreach($_COOKIE as $key=&gt;$value) &#123;<br/>$linev .= &quot;&#92;r&#92;n&quot;.rlog($key,$value,$cookiefilter,&quot;COOKIE&quot;);<br/>&nbsp;&nbsp;&#125;<br/><br/>//尝试记录RAW等POST过来的xml,json数据 <br/>&nbsp;&nbsp;$datainput = file_get_contents(&#039;php://input&#039;);<br/>&nbsp;&nbsp;if($datainput)&#123;<br/>&nbsp;&nbsp;$datainput=arraforeach($datainput);<br/>$linev .= &quot;&#92;r&#92;n&quot;.rlog(&quot;Input&quot;,$datainput,$datainput,&quot;Input&quot;);<br/>&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;$datainput = $GLOBALS&#91;&#039;HTTP_RAW_POST_DATA&#039;&#93;;<br/>&nbsp;&nbsp;$datainput = arraforeach($datainput);<br/> if($datainput) $linev .= &quot;&#92;r&#92;n&quot;.rlog(&quot;Input&quot;,$datainput,$datainput,&quot;RAW_POST&quot;);<br/>&nbsp;&nbsp;&#125;<br/><br/>/*<br/>$linev .=&nbsp;&nbsp;&quot;&#92;r&#92;n MYIP-=&gt;&quot;.$_SERVER&#91;&quot;REMOTE_ADDR&quot;&#93;.&quot;&#92;r&#92;n&quot;;<br/>$linev .=&nbsp;&nbsp;&quot; From-=&gt;&quot;.$_SERVER&#91;&#039;HTTP_REFERER&#039;&#93;.&quot;&#92;r&#92;n&quot;;<br/>$linev .=&nbsp;&nbsp;&quot; Uurl-=&gt;&quot;.$_SERVER&#91;&quot;REQUEST_URI&quot;&#93;.&quot;&#92;r&#92;n&quot;;<br/>$linev .=&nbsp;&nbsp;&quot; Agen-=&gt;&quot;.$_SERVER&#91;&#039;HTTP_USER_AGENT&#039;&#93;.&quot;&#92;r&#92;n&#92;r&#92;n&quot;;<br/>*/<br/><br/>$linev .=&nbsp;&nbsp;&quot;&#92;r&#92;n&quot;.rlog(&quot;From&quot;,$_SERVER&#91;&#039;HTTP_REFERER&#039;&#93;,$_SERVER&#91;&#039;HTTP_REFERER&#039;&#93;,&quot;From&quot;);<br/>$linev .=&nbsp;&nbsp;&quot;&#92;r&#92;n&quot;.rlog(&quot;Uurl&quot;,$_SERVER&#91;&quot;REQUEST_URI&quot;&#93;,$_SERVER&#91;&quot;REQUEST_URI&quot;&#93;,&quot;Uurl&quot;);<br/>$linev .=&nbsp;&nbsp;&quot;&#92;r&#92;n&quot;.rlog(&quot;MYIP&quot;,$_SERVER&#91;&quot;REMOTE_ADDR&quot;&#93;,$_SERVER&#91;&quot;REMOTE_ADDR&quot;&#93;,&quot;MYIP&quot;);<br/>$linev .=&nbsp;&nbsp;&quot;&#92;r&#92;n&quot;.rlog(&quot;Agen&quot;,$_SERVER&#91;&#039;HTTP_USER_AGENT&#039;&#93;,$_SERVER&#91;&#039;HTTP_USER_AGENT&#039;&#93;,&quot;Agen&quot;);<br/>$linev .=&nbsp;&nbsp;&quot;&#92;r&#92;n&lt;/table&gt;&#92;r&#92;n&quot;;<br/><br/><br/>$lines=&#039;&lt;style type=&quot;text/css&quot;&gt;table&#123;border:1px solid #0180CF; margin:0 auto;font-size:12px;width:92%;&#125;table td&#123;border:1px solid #a2c6d3;padding:5px;word-wrap:break-word;word-break:break-all;&#125;&lt;/style&gt;&#039;;<br/><br/>$rr = &#039;./_12391.net_&#039;.date(&#039;Y-m-d&#039;).&#039;.html&#039;;//按天存放<br/><br/>if(!file_exists($rr))&#123;<br/>slog($rr,$lines);<br/>&#125;<br/><br/>slog($rr,$linev);<br/>echo $lines;<br/>echo $linev;<br/><br/><br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1115/</link>
<title><![CDATA[PHP是否命令行执行]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:13:48 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1115/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/>function is_cli()<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return preg_match(&quot;/cli/i&quot;, php_sapi_name()) ? true : false;<br/>&#125;<br/><br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1114/</link>
<title><![CDATA[php中利用redis限制接口请求频率]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 02:51:39 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1114/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/><br/>function getRedis()<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$redis = new Redis();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$redis-&gt;connect(&#039;127.0.0.1&#039;, 6379);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $redis;<br/>&#125;<br/><br/>function getApiLimit($api, $default = &#039;2000&#039;)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//接口名称 = 每次请求ms间隔<br/>&nbsp;&nbsp;&nbsp;&nbsp;$info = &#91;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;user.info&#039; =&gt; &#039;500&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;user.login&#039; =&gt; &#039;1000&#039;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return isset($info&#91;$api&#93;) ? $info&#91;$api&#93; : $default;<br/>&#125;<br/><br/>$api = isset($_GET&#91;&#039;path&#039;&#93;) ? $_GET&#91;&#039;path&#039;&#93; : &#039;main&#039;;<br/>$time = getApiLimit($api);<br/>$key = &quot;api_limit_&quot; . $api;<br/>$redis = getRedis();<br/>$num = $redis-&gt;incr($key);<br/>if($num == 1) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$redis-&gt;pExpire($key, $time);<br/>&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit(&#039;api limit&#039;);<br/>&#125;<br/>echo &#039;success&#039;;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1112/</link>
<title><![CDATA[PHP从MySQL获取大量数据时内存耗尽问题的解决方案]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 02:38:27 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1112/</guid> 
<description>
<![CDATA[ 
	最近在开发一个PHP程序时遇到了下面的错误：<br/>PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted<br/>错误信息显示允许的最大内存已经耗尽。遇到这样的错误起初让我很诧异，但转眼一想，也不奇怪，因为我正在开发的这个程序是要用一个foreach循环语句在一个有4万条记录的表里全表搜索具有特定特征的数据，也就是说，一次要把4万条数据取出，然后逐条检查每天数据。可想而知，4万条数据全部加载到内存中，内存不爆才怪。<br/>毕竟编程这么多年，我隐约记得PHP里提供有非一次全部加载数据的API，是像处理流媒体那样，随用随取随丢、数据并不会积累在内存的查询方法。经过简单的搜索，果然在官方网站上找到的正确的用法。<br/>这个问题在PHP的官方网站上叫缓冲查询和非缓冲查询(Buffered and Unbuffered queries)。 PHP的查询缺省模式是缓冲模式。也就是说，查询数据结果会一次全部提取到内存里供PHP程序处理。这样给了PHP程序额外的功能，比如说，计算行数，将 指针指向某一行等。更重要的是程序可以对数据集反复进行二次查询和过滤等操作。但这种缓冲查询模式的缺陷就是消耗内存，也就是用空间换速度。<br/>相对的，另外一种PHP查询模式是非缓冲查询，数据库服务器会一条一条的返回数据，而不是一次全部返回，这样的结果就是PHP程序消耗较少的内存，但却增加了数据库服务器的压力，因为数据库会一直等待PHP来取数据，一直到数据全部取完。<br/>很显然，缓冲查询模式适用于小数据量查询，而非缓冲查询适应于大数据量查询。<br/>对于PHP的缓冲模式查询大家都知道，下面列举的例子是如何执行非缓冲查询API。<br/><div class="code"><br/>非缓冲查询方法一: mysqli<br/>&lt;?php <br/>$mysqli&nbsp;&nbsp;= new mysqli(&quot;localhost&quot;, &quot;my_user&quot;, &quot;my_password&quot;, &quot;world&quot;); <br/>$uresult = $mysqli-&gt;query(&quot;SELECT Name FROM City&quot;, MYSQLI_USE_RESULT);<br/>if ($uresult) &#123; <br/>&nbsp;&nbsp; while ($row = $uresult-&gt;fetch_assoc()) &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $row&#91;&#039;Name&#039;&#93; . PHP_EOL; <br/>&nbsp;&nbsp; &#125; <br/>&#125; <br/>$uresult-&gt;close(); <br/>?&gt;<br/></div><br/><div class="code"><br/>非缓冲查询方法二: pdo_mysql<br/>&lt;?php <br/>$pdo = new PDO(&quot;mysql:host=localhost;dbname=world&quot;, &#039;my_user&#039;, &#039;my_pass&#039;); <br/>$pdo-&gt;setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);<br/>$uresult = $pdo-&gt;query(&quot;SELECT Name FROM City&quot;); <br/>if ($uresult) &#123; <br/>&nbsp;&nbsp; while ($row = $uresult-&gt;fetch(PDO::FETCH_ASSOC)) &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $row&#91;&#039;Name&#039;&#93; . PHP_EOL; <br/>&nbsp;&nbsp; &#125; <br/>&#125; <br/>?&gt;<br/></div><br/><div class="code"><br/>非缓冲查询方法三: mysql<br/>&lt;?php <br/>$conn = mysql_connect(&quot;localhost&quot;, &quot;my_user&quot;, &quot;my_pass&quot;); <br/>$db&nbsp;&nbsp; = mysql_select_db(&quot;world&quot;);<br/>$uresult = mysql_unbuffered_query(&quot;SELECT Name FROM City&quot;); <br/>if ($uresult) &#123; <br/>&nbsp;&nbsp; while ($row = mysql_fetch_assoc($uresult)) &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $row&#91;&#039;Name&#039;&#93; . PHP_EOL; <br/>&nbsp;&nbsp; &#125; <br/>&#125; <br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1111/</link>
<title><![CDATA[威盾PHP加密专家解密算法]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 02:34:52 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1111/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php <br/>/*********************************** <br/>*威盾PHP加密专家解密算法 By：Neeao <br/>*http://Neeao.com <br/>*2009-09-10 <br/>***********************************/ <br/> <br/>$filename=&quot;logincheck-hou.php&quot;;//要解密的文件 <br/>$lines = file($filename);//0,1,2行 <br/><br/>//第一次base64解密 <br/>$content=&quot;&quot;; <br/>if(preg_match(&quot;/O0O0000O0&#92;(&#039;.*&#039;&#92;)/&quot;,$lines&#91;1&#93;,$y)) <br/>&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$content=str_replace(&quot;O0O0000O0(&#039;&quot;,&quot;&quot;,$y&#91;0&#93;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;$content=str_replace(&quot;&#039;)&quot;,&quot;&quot;,$content); <br/>&nbsp;&nbsp;&nbsp;&nbsp;$content=base64_decode($content); <br/>&#125; <br/><br/><br/>//第一次base64解密后的内容中查找密钥 <br/>$decode_key=&quot;&quot;; <br/>if(preg_match(&quot;/&#92;),&#039;.*&#039;,/&quot;,$content,$k)) <br/>&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$decode_key=str_replace(&quot;),&#039;&quot;,&quot;&quot;,$k&#91;0&#93;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;$decode_key=str_replace(&quot;&#039;,&quot;,&quot;&quot;,$decode_key); <br/>&#125; <br/> <br/>//查找要截取字符串长度 <br/>$str_length=&quot;&quot;; <br/>if(preg_match(&quot;/,&#92;d*&#92;),/&quot;,$content,$k)) <br/>&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$str_length=str_replace(&quot;),&quot;,&quot;&quot;,$k&#91;0&#93;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;$str_length=str_replace(&quot;,&quot;,&quot;&quot;,$str_length); <br/>&#125; <br/>//截取文件加密后的密文 <br/>$Secret=substr($lines&#91;2&#93;,$str_length); <br/>//echo $Secret; <br/> <br/>//直接还原密文输出 <br/>/*echo &quot;&lt;?php&#92;n&quot;.base64_decode(strtr($Secret,$decode_key,&#039;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&#039;)).&quot;?&gt;&quot;; <br/> */<br/> <br/>file_put_contents(&quot;test.php&quot;, &quot;&lt;?php&#92;n&quot;.base64_decode(strtr($Secret,$decode_key,&#039;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&#039;)).&quot;?&gt;&quot; );<br/> <br/>?&gt; <br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1110/</link>
<title><![CDATA[PHP 生成数据字典]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 02:20:02 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1110/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/>/**<br/> * 生成mysql数据字典<br/> */<br/>header(&quot;Content-type: text/html; charset=utf-8&quot;);<br/>//配置数据库<br/>$dbserver&nbsp;&nbsp; = &quot;127.0.0.1&quot;;<br/>$database&nbsp;&nbsp; = &quot;vuethink&quot;;<br/>$user = &#039;root&#039;;<br/>$password = &#039;root&#039;;<br/>//其他配置<br/>$dsn = &quot;mysql:dbname=$database;host=$dbserver&quot;;<br/><br/><br/>try &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$pdo = new PDO($dsn, $user, $password);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$pdo-&gt;exec(&#039;SET NAMES utf8&#039;);<br/>&#125; catch (PDOException $e) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &#039;Connection failed: &#039; . $e-&gt;getMessage();<br/>&#125;<br/><br/>$table_result = $pdo-&gt;query(&#039;show tables&#039;)-&gt;fetchAll();<br/><br/>$no_show_table = array();&nbsp;&nbsp;&nbsp;&nbsp;//不需要显示的表<br/>$no_show_field = array();&nbsp;&nbsp; //不需要显示的字段<br/><br/>//取得所有的表名<br/>foreach ($table_result as $row) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!in_array($row&#91;0&#93;,$no_show_table))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tables&#91;&#93;&#91;&#039;TABLE_NAME&#039;&#93; = $row&#91;0&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/><br/>//替换所以表的表前缀<br/>if(@$_GET&#91;&#039;prefix&#039;&#93;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$prefix = &#039;oa&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach($tables as $key =&gt; $val)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tableName = $val&#91;&#039;TABLE_NAME&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$string = explode(&#039;_&#039;,$tableName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($string&#91;0&#93; != $prefix)&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$string&#91;0&#93; = $prefix;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$newTableName = implode(&#039;_&#039;, $string);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysqli_query(&#039;rename table &#039;.$tableName.&#039; TO &#039;.$newTableName);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;替换成功！&quot;;exit();<br/>&#125;<br/><br/>//循环取得所有表的备注及表中列消息<br/>foreach ($tables as $k=&gt;$v) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql&nbsp;&nbsp;= &#039;SELECT * FROM &#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql .= &#039;INFORMATION_SCHEMA.TABLES &#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql .= &#039;WHERE &#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql .= &quot;table_name = &#039;&#123;$v&#91;&#039;TABLE_NAME&#039;&#93;&#125;&#039;&nbsp;&nbsp;AND table_schema = &#039;&#123;$database&#125;&#039;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$table_result = $pdo-&gt;query($sql)-&gt;fetchAll();<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($table_result as $t) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tables&#91;$k&#93;&#91;&#039;TABLE_COMMENT&#039;&#93; = $t&#91;&#039;TABLE_COMMENT&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql&nbsp;&nbsp;= &#039;SELECT * FROM &#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql .= &#039;INFORMATION_SCHEMA.COLUMNS &#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql .= &#039;WHERE &#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sql .= &quot;table_name = &#039;&#123;$v&#91;&#039;TABLE_NAME&#039;&#93;&#125;&#039; AND table_schema = &#039;&#123;$database&#125;&#039;&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$fields = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$field_result = $pdo-&gt;query($sql)-&gt;fetchAll();<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($field_result as $t) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fields&#91;&#93; = $t;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$tables&#91;$k&#93;&#91;&#039;COLUMN&#039;&#93; = $fields;<br/>&#125;<br/><br/><br/><br/>$html = &#039;&#039;;<br/>//循环所有表<br/>foreach ($tables as $k=&gt;$v) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&lt;h3&gt;&#039; . ($k + 1) . &#039;、&#039; . $v&#91;&#039;TABLE_COMMENT&#039;&#93; .&#039;&nbsp;&nbsp;（&#039;. $v&#91;&#039;TABLE_NAME&#039;&#93;. &#039;）&lt;/h3&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot;&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tbody&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;字段名&lt;/th&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;数据类型&lt;/th&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;默认值&lt;/th&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;允许非空&lt;/th&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;自动递增&lt;/th&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;备注&lt;/th&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;&#039;.&quot;&#92;n&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($v&#91;&#039;COLUMN&#039;&#93; as $f) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(@!is_array($no_show_field&#91;$v&#91;&#039;TABLE_NAME&#039;&#93;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$no_show_field&#91;$v&#91;&#039;TABLE_NAME&#039;&#93;&#93; = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!in_array($f&#91;&#039;COLUMN_NAME&#039;&#93;,$no_show_field&#91;$v&#91;&#039;TABLE_NAME&#039;&#93;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class=&quot;c1&quot;&gt;&#039; . $f&#91;&#039;COLUMN_NAME&#039;&#93; . &#039;&lt;/td&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class=&quot;c2&quot;&gt;&#039; . $f&#91;&#039;COLUMN_TYPE&#039;&#93; . &#039;&lt;/td&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class=&quot;c3&quot;&gt;&#039; . $f&#91;&#039;COLUMN_DEFAULT&#039;&#93; . &#039;&lt;/td&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class=&quot;c4&quot;&gt;&#039; . $f&#91;&#039;IS_NULLABLE&#039;&#93; . &#039;&lt;/td&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class=&quot;c5&quot;&gt;&#039; . ($f&#91;&#039;EXTRA&#039;&#93;==&#039;auto_increment&#039;?&#039;是&#039;:&#039;&amp;nbsp;&#039;) . &#039;&lt;/td&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class=&quot;c6&quot;&gt;&#039; . $f&#91;&#039;COLUMN_COMMENT&#039;&#93; . &#039;&lt;/td&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tbody&gt;&#039;.&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$html .= &#039;&nbsp;&nbsp;&lt;/table&gt;&#039;.&quot;&#92;n&quot;;<br/>&#125;<br/>?&gt;<br/>&lt;!doctype html&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;meta charset=&quot;utf-8&quot;&gt;<br/>&lt;title&gt;数据库数据字典生成代码&lt;/title&gt;<br/>&lt;meta name=&quot;generator&quot; content=&quot;ThinkDb V1.0&quot; /&gt;<br/>&lt;meta name=&quot;author&quot; content=&quot;数据库数据字典生成代码&quot; /&gt;<br/>&lt;style&gt;<br/>body, td, th &#123; font-family: &quot;微软雅黑&quot;; font-size: 14px; &#125;<br/>.warp&#123;margin:auto; width:900px;&#125;<br/>.warp h3&#123;margin:0px; padding:0px; line-height:30px; margin-top:10px;&#125;<br/>table &#123; border-collapse: collapse; border: 1px solid #CCC; background: #efefef; &#125;<br/>table th &#123; text-align: left; font-weight: bold; height: 26px; line-height: 26px; font-size: 14px; text-align:center; border: 1px solid #CCC; padding:5px;&#125;<br/>table td &#123; height: 20px; font-size: 14px; border: 1px solid #CCC; background-color: #fff; padding:5px;&#125;<br/>.c1 &#123; width: 120px; &#125;<br/>.c2 &#123; width: 120px; &#125;<br/>.c3 &#123; width: 150px; &#125;<br/>.c4 &#123; width: 80px; text-align:center;&#125;<br/>.c5 &#123; width: 80px; text-align:center;&#125;<br/>.c6 &#123; width: 270px; &#125;<br/>&lt;/style&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;div class=&quot;warp&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1 style=&quot;text-align:center;&quot;&gt;数据库数据字典&lt;/h1&gt;<br/>&lt;?php echo $html; ?&gt;<br/>&lt;/div&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1109/</link>
<title><![CDATA[PHP文件操作类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 02:17:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1109/</guid> 
<description>
<![CDATA[ 
	* FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹<br/>* FileUtil::createFile('b/1/2/3'); 测试建立文件 在b/1/2/文件夹下面建一个3文件<br/>* FileUtil::createFile('b/1/2/3.exe'); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件<br/>* FileUtil::copyDir('b','d/e'); 测试复制文件夹 建立一个d/e文件夹，把b文件夹下的内容复制进去<br/>* FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件 建立一个b/b文件夹，并把b/1/2文件夹中的3.exe文件复制进去<br/>* FileUtil::moveDir('a/','b/c'); 测试移动文件夹 建立一个b/c文件夹,并把a文件夹下的内容移动进去，并删除a文件夹<br/>* FileUtil::moveFile('b/1/2/3.exe','b/d/3.exe'); 测试移动文件 建立一个b/d文件夹，并把b/1/2中的3.exe移动进去 <br/>* FileUtil::unlinkFile('b/d/3.exe'); 测试删除文件 删除b/d/3.exe文件<br/>* FileUtil::unlinkDir('d'); 测试删除文件夹 删除d文件夹<br/><br/><div class="code"><br/>&lt;?php<br/>/**<br/>* 操纵文件类<br/>* <br/>* 例子：<br/>* FileUtil::createDir(&#039;a/1/2/3&#039;); 测试建立文件夹 建一个a/1/2/3文件夹<br/>* FileUtil::createFile(&#039;b/1/2/3&#039;); 测试建立文件 在b/1/2/文件夹下面建一个3文件<br/>* FileUtil::createFile(&#039;b/1/2/3.exe&#039;); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件<br/>* FileUtil::copyDir(&#039;b&#039;,&#039;d/e&#039;); 测试复制文件夹 建立一个d/e文件夹，把b文件夹下的内容复制进去<br/>* FileUtil::copyFile(&#039;b/1/2/3.exe&#039;,&#039;b/b/3.exe&#039;); 测试复制文件 建立一个b/b文件夹，并把b/1/2文件夹中的3.exe文件复制进去<br/>* FileUtil::moveDir(&#039;a/&#039;,&#039;b/c&#039;); 测试移动文件夹 建立一个b/c文件夹,并把a文件夹下的内容移动进去，并删除a文件夹<br/>* FileUtil::moveFile(&#039;b/1/2/3.exe&#039;,&#039;b/d/3.exe&#039;); 测试移动文件 建立一个b/d文件夹，并把b/1/2中的3.exe移动进去 <br/>* FileUtil::unlinkFile(&#039;b/d/3.exe&#039;); 测试删除文件 删除b/d/3.exe文件<br/>* FileUtil::unlinkDir(&#039;d&#039;); 测试删除文件夹 删除d文件夹<br/>*/<br/>class FileUtil &#123;<br/>/**<br/>* 建立文件夹<br/>*<br/>* @param string $aimUrl<br/>* @return viod<br/>*/<br/>function createDir($aimUrl) &#123;<br/>$aimUrl = str_replace(&#039;&#039;, &#039;/&#039;, $aimUrl);<br/>$aimDir = &#039;&#039;;<br/>$arr = explode(&#039;/&#039;, $aimUrl);<br/>$result = true;<br/>foreach ($arr as $str) &#123;<br/>$aimDir .= $str . &#039;/&#039;;<br/>if (!file_exists($aimDir)) &#123;<br/>$result = mkdir($aimDir);<br/>&#125;<br/>&#125;<br/>return $result;<br/>&#125;<br/>/**<br/>* 建立文件<br/>*<br/>* @param string $aimUrl <br/>* @param boolean $overWrite 该参数控制是否覆盖原文件<br/>* @return boolean<br/>*/<br/>function createFile($aimUrl, $overWrite = false) &#123;<br/>if (file_exists($aimUrl) &amp;&amp; $overWrite == false) &#123;<br/>return false;<br/>&#125; elseif (file_exists($aimUrl) &amp;&amp; $overWrite == true) &#123;<br/>FileUtil :: unlinkFile($aimUrl);<br/>&#125;<br/>$aimDir = dirname($aimUrl);<br/>FileUtil :: createDir($aimDir);<br/>touch($aimUrl);<br/>return true;<br/>&#125;<br/>/**<br/>* 移动文件夹<br/>*<br/>* @param string $oldDir<br/>* @param string $aimDir<br/>* @param boolean $overWrite 该参数控制是否覆盖原文件<br/>* @return boolean<br/>*/<br/>function moveDir($oldDir, $aimDir, $overWrite = false) &#123;<br/>$aimDir = str_replace(&#039;&#039;, &#039;/&#039;, $aimDir);<br/>$aimDir = substr($aimDir, -1) == &#039;/&#039; ? $aimDir : $aimDir . &#039;/&#039;;<br/>$oldDir = str_replace(&#039;&#039;, &#039;/&#039;, $oldDir);<br/>$oldDir = substr($oldDir, -1) == &#039;/&#039; ? $oldDir : $oldDir . &#039;/&#039;;<br/>if (!is_dir($oldDir)) &#123;<br/>return false;<br/>&#125;<br/>if (!file_exists($aimDir)) &#123;<br/>FileUtil :: createDir($aimDir);<br/>&#125;<br/>@ $dirHandle = opendir($oldDir);<br/>if (!$dirHandle) &#123;<br/>return false;<br/>&#125;<br/>while (false !== ($file = readdir($dirHandle))) &#123;<br/>if ($file == &#039;.&#039; &#124;&#124; $file == &#039;..&#039;) &#123;<br/>continue;<br/>&#125;<br/>if (!is_dir($oldDir . $file)) &#123;<br/>FileUtil :: moveFile($oldDir . $file, $aimDir . $file, $overWrite);<br/>&#125; else &#123;<br/>FileUtil :: moveDir($oldDir . $file, $aimDir . $file, $overWrite);<br/>&#125;<br/>&#125;<br/>closedir($dirHandle);<br/>return rmdir($oldDir);<br/>&#125;<br/>/**<br/>* 移动文件<br/>*<br/>* @param string $fileUrl<br/>* @param string $aimUrl<br/>* @param boolean $overWrite 该参数控制是否覆盖原文件<br/>* @return boolean<br/>*/<br/>function moveFile($fileUrl, $aimUrl, $overWrite = false) &#123;<br/>if (!file_exists($fileUrl)) &#123;<br/>return false;<br/>&#125;<br/>if (file_exists($aimUrl) &amp;&amp; $overWrite = false) &#123;<br/>return false;<br/>&#125; elseif (file_exists($aimUrl) &amp;&amp; $overWrite = true) &#123;<br/>FileUtil :: unlinkFile($aimUrl);<br/>&#125;<br/>$aimDir = dirname($aimUrl);<br/>FileUtil :: createDir($aimDir);<br/>rename($fileUrl, $aimUrl);<br/>return true;<br/>&#125;<br/>/**<br/>* 删除文件夹<br/>*<br/>* @param string $aimDir<br/>* @return boolean<br/>*/<br/>function unlinkDir($aimDir) &#123;<br/>$aimDir = str_replace(&#039;&#039;, &#039;/&#039;, $aimDir);<br/>$aimDir = substr($aimDir, -1) == &#039;/&#039; ? $aimDir : $aimDir . &#039;/&#039;;<br/>if (!is_dir($aimDir)) &#123;<br/>return false;<br/>&#125;<br/>$dirHandle = opendir($aimDir);<br/>while (false !== ($file = readdir($dirHandle))) &#123;<br/>if ($file == &#039;.&#039; &#124;&#124; $file == &#039;..&#039;) &#123;<br/>continue;<br/>&#125;<br/>if (!is_dir($aimDir . $file)) &#123;<br/>FileUtil :: unlinkFile($aimDir . $file);<br/>&#125; else &#123;<br/>FileUtil :: unlinkDir($aimDir . $file);<br/>&#125;<br/>&#125;<br/>closedir($dirHandle);<br/>return rmdir($aimDir);<br/>&#125;<br/>/**<br/>* 删除文件<br/>*<br/>* @param string $aimUrl<br/>* @return boolean<br/>*/<br/>function unlinkFile($aimUrl) &#123;<br/>if (file_exists($aimUrl)) &#123;<br/>unlink($aimUrl);<br/>return true;<br/>&#125; else &#123;<br/>return false;<br/>&#125;<br/>&#125;<br/>/**<br/>* 复制文件夹<br/>*<br/>* @param string $oldDir<br/>* @param string $aimDir<br/>* @param boolean $overWrite 该参数控制是否覆盖原文件<br/>* @return boolean<br/>*/<br/>function copyDir($oldDir, $aimDir, $overWrite = false) &#123;<br/>$aimDir = str_replace(&#039;&#039;, &#039;/&#039;, $aimDir);<br/>$aimDir = substr($aimDir, -1) == &#039;/&#039; ? $aimDir : $aimDir . &#039;/&#039;;<br/>$oldDir = str_replace(&#039;&#039;, &#039;/&#039;, $oldDir);<br/>$oldDir = substr($oldDir, -1) == &#039;/&#039; ? $oldDir : $oldDir . &#039;/&#039;;<br/>if (!is_dir($oldDir)) &#123;<br/>return false;<br/>&#125;<br/>if (!file_exists($aimDir)) &#123;<br/>FileUtil :: createDir($aimDir);<br/>&#125;<br/>$dirHandle = opendir($oldDir);<br/>while (false !== ($file = readdir($dirHandle))) &#123;<br/>if ($file == &#039;.&#039; &#124;&#124; $file == &#039;..&#039;) &#123;<br/>continue;<br/>&#125;<br/>if (!is_dir($oldDir . $file)) &#123;<br/>FileUtil :: copyFile($oldDir . $file, $aimDir . $file, $overWrite);<br/>&#125; else &#123;<br/>FileUtil :: copyDir($oldDir . $file, $aimDir . $file, $overWrite);<br/>&#125;<br/>&#125;<br/>return closedir($dirHandle);<br/>&#125;<br/>/**<br/>* 复制文件<br/>*<br/>* @param string $fileUrl<br/>* @param string $aimUrl<br/>* @param boolean $overWrite 该参数控制是否覆盖原文件<br/>* @return boolean<br/>*/<br/>function copyFile($fileUrl, $aimUrl, $overWrite = false) &#123;<br/>if (!file_exists($fileUrl)) &#123;<br/>return false;<br/>&#125;<br/>if (file_exists($aimUrl) &amp;&amp; $overWrite == false) &#123;<br/>return false;<br/>&#125; elseif (file_exists($aimUrl) &amp;&amp; $overWrite == true) &#123;<br/>FileUtil :: unlinkFile($aimUrl);<br/>&#125;<br/>$aimDir = dirname($aimUrl);<br/>FileUtil :: createDir($aimDir);<br/>copy($fileUrl, $aimUrl);<br/>return true;<br/>&#125;<br/>&#125;<br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1108/</link>
<title><![CDATA[简单的PHP日志函数]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 02:15:40 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1108/</guid> 
<description>
<![CDATA[ 
	生成txt格式的日志文件<br/><div class="code"><br/>/**<br/> * 日志记录，按照&quot;Y-m-d.log&quot;生成当天日志文件<br/> * 日志路径为：入口文件所在目录/logs/$type/当天日期.log.php，例如 /logs/error/2012-01-05.log.php<br/> * @param string $content 日志内容<br/> * @param string $type 对应logs目录下的子文件夹名<br/> * @return bool true/false 返回写入的字符数，出现错误时则返回 FALSE 。<br/> */<br/>function writelog($content = &quot;&quot;, $type = &quot;&quot;)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;date_default_timezone_set(&#039;PRC&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;//判断日志根目录是否存在，不存在则创建<br/>&nbsp;&nbsp;&nbsp;&nbsp;$log_root = getcwd() . DIRECTORY_SEPARATOR . &#039;logs&#039;;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;$log_root = ROOT_PATH . &#039;logs&#039;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($log_root)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir($log_root, 0777);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//如传入第二个参数，则生成子文件夹；否则在根目录创建日志<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($type) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root . DIRECTORY_SEPARATOR . $type;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($dir)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!mkdir($dir, 0777, true)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$filename = $dir . DIRECTORY_SEPARATOR . date(&quot;Y-m-d&quot;) . &#039;.log.txt&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($content)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$content = print_r($content, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$ss = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for ($i = 1; $i &lt;= 115; $i++) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ss .= &#039;-&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$exec_url = &#039;http://&#039; . $_SERVER&#91;&#039;SERVER_NAME&#039;&#93; . $_SERVER&#91;&quot;REQUEST_URI&quot;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//组装数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = &quot;&#92;r&#92;n&quot; . &#039;time:&#039; . date(&quot;Y-m-d H:i:s&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. &quot;&#92;r&#92;n&quot; . &#039;exec_url:&#039; . $exec_url;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str .= &quot;&#92;r&#92;n&quot; . &#039;content:&#039; . $content<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. &quot;&#92;r&#92;n&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. $ss;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!$fp = @fopen($filename, &quot;ab&quot;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_EX);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$res = fwrite($fp, $str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_UN);<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $res;<br/>&#125;<br/></div><br/><br/>生成php格式的日志文件<br/><div class="code"><br/>/**<br/> * 日志记录，按照&quot;Y-m-d.log&quot;生成当天日志文件<br/> * 日志路径为：入口文件所在目录/logs/$type/当天日期.log.php，例如 /logs/error/2012-01-05.log.php<br/> * @param string $content 日志内容<br/> * @param string $type 对应logs目录下的子文件夹名<br/> * @return bool true/false 返回写入的字符数，出现错误时则返回 FALSE 。<br/> */<br/>function write_log($content = &quot;&quot;, $type = &quot;&quot;)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;date_default_timezone_set(&#039;PRC&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;//判断日志根目录是否存在，不存在则创建<br/>&nbsp;&nbsp;&nbsp;&nbsp;$log_root = getcwd() . DIRECTORY_SEPARATOR . &#039;logs&#039;;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;$log_root = ROOT_PATH . &#039;logs&#039;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($log_root)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir($log_root, 0777);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//如传入第二个参数，则生成子文件夹；否则在根目录创建日志<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($type) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root . DIRECTORY_SEPARATOR . $type;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($dir)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!mkdir($dir, 0777, true)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//判断日志文件是否存在,以及内容是否为数组，不是数组则删除文件;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$filename = $dir . DIRECTORY_SEPARATOR . date(&quot;Y-m-d&quot;) . &#039;.log.php&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;@$logs = include $filename;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($logs &amp;&amp; !is_array($logs)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink($filename);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$logs = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//将时间和内容写入日志<br/>&nbsp;&nbsp;&nbsp;&nbsp;$exec_url = &#039;http://&#039; . $_SERVER&#91;&#039;SERVER_NAME&#039;&#93; . $_SERVER&#91;&quot;REQUEST_URI&quot;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//组装数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this_log = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;time&quot; =&gt; date(&quot;Y-m-d H:i:s&quot;),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;exec_url&#039; =&gt; $exec_url,<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this_log&#91;&#039;content&#039;&#93; = $content;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$logs&#91;&#93; = $this_log;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = &quot;&lt;?php &#92;r&#92;n return &quot; . array_eval($logs) . &quot;;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!$fp = @fopen($filename, &quot;wb&quot;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_EX);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$res = fwrite($fp, $str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_UN);<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $res;<br/>&#125;<br/>/**<br/> * @desc 数组转换成字串<br/> * @param $array<br/> * @param bool $format<br/> * @param int $level<br/> * @return string<br/> */<br/>function array_eval($array, $format = false, $level = 0)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$space = $line = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!$format) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i = 0; $i &lt;= $level; $i++) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$space .= &quot;&#92;t&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$line = &quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$evaluate = &#039;array&#039; . $line . $space . &#039;(&#039; . $line;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$comma = $space;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($array as $key =&gt; $val) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key = is_string($key) ? &#039;&#92;&#039;&#039; . addcslashes($key, &#039;&#92;&#039;&#92;&#92;&#039;) . &#039;&#92;&#039;&#039; : $key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$val = !is_array($val) &amp;&amp; (!preg_match(&#039;/^&#92;-?&#92;d+$/&#039;, $val) &#124;&#124; strlen($val) &gt; 12) ? &#039;&#92;&#039;&#039; . addcslashes($val, &#039;&#92;&#039;&#92;&#92;&#039;) . &#039;&#92;&#039;&#039; : $val;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($val)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$evaluate .= $comma . $key . &#039; =&gt; &#039; . array_eval($val, $format, $level + 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$evaluate .= $comma . $key . &#039; =&gt; &#039; . $val;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$comma = &#039;,&#039; . $line . $space;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$evaluate .= $line . $space . &#039;)&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $evaluate;<br/>&#125;<br/></div>
]]>
</description>
</item>
</channel>
</rss>