<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>最优良人 &#187; 后端程序</title>
	<atom:link href="http://www.zui88.com/view-category/%e5%90%8e%e7%ab%af%e7%a8%8b%e5%ba%8f/feed" rel="self" type="application/rss+xml" />
	<link>http://www.zui88.com/blog</link>
	<description>中山php&#124;最优网络</description>
	<lastBuildDate>Mon, 13 May 2013 04:56:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>php压缩html : 清除换行符,清除制表符,去掉注释标记</title>
		<link>http://www.zui88.com/blog/view-431.html</link>
		<comments>http://www.zui88.com/blog/view-431.html#comments</comments>
		<pubDate>Sat, 30 Mar 2013 06:48:24 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=431</guid>
		<description><![CDATA[/** * 压缩html : 清除换行符,清除制表符,去掉注释标记 * @param $string * @return 压缩后的$string * */ function compress_html($string) { $string = str_replace("\r\n", '', $string); //清除换行符 $string = str_replace("\n", '', $string); //清除换行符 $string = str_replace("\t", '', $string); //清除制表符 $pattern = array ( "/&#62; *([^ ]*) *&#60;/", //去掉注释标记 "/[\s]+/", "/&#60;!--[^!]*--&#62;/", "/\" /", "/ \"/", "'/\*[^*]*\*/'" ); $replace = array ( [...]]]></description>
			<content:encoded><![CDATA[<p>/**<br />
* 压缩html : 清除换行符,清除制表符,去掉注释标记<br />
* @param $string<br />
* @return 压缩后的$string<br />
* */<br />
function compress_html($string) {<br />
$string = str_replace("\r\n", '', $string); //清除换行符<br />
$string = str_replace("\n", '', $string); //清除换行符<br />
$string = str_replace("\t", '', $string); //清除制表符<br />
$pattern = array (<br />
"/&gt; *([^ ]*) *&lt;/", //去掉注释标记<br />
"/[\s]+/",<br />
"/&lt;!--[^!]*--&gt;/",<br />
"/\" /",<br />
"/ \"/",<br />
"'/\*[^*]*\*/'"<br />
);<br />
$replace = array (<br />
"&gt;\\1&lt;",<br />
" ",<br />
"",<br />
"\"",<br />
"\"",<br />
""<br />
);<br />
return preg_replace($pattern, $replace, $string);<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-431.html/feed</wfw:commentRss>
		<slash:comments>689</slash:comments>
		</item>
		<item>
		<title>php防止刷流量攻击</title>
		<link>http://www.zui88.com/blog/view-428.html</link>
		<comments>http://www.zui88.com/blog/view-428.html#comments</comments>
		<pubDate>Fri, 29 Mar 2013 10:55:10 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=428</guid>
		<description><![CDATA[&#60;?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fileht))file_put_contents($fileht,""); $filehtarr=@file($fileht); if(in_array($ip."\r\n",$filehtarr))die("Warning:"."&#60;br&#62;"."Your IP address are forbided by some reason, IF you have any question Pls emill to shop@mydalle.com!"); //加入禁止IP $time=time(); $fileforbid="log/forbidchk.dat"; if(file_exists($fileforbid)) { if($time-filemtime($fileforbid)&#62;60)unlink($fileforbid); else{ $fileforbidarr=@file($fileforbid); if($ip==substr($fileforbidarr[0],0,strlen($ip))) { if($time-substr($fileforbidarr[1],0,strlen($time))&#62;600)unlink($fileforbid); elseif($fileforbidarr[2]&#62;600){file_put_contents($fileht,$ip."\r\n",FILE_APPEND);unlink($fileforbid);} else{$fileforbidarr[2]++;file_put_contents($fileforbid,$fileforbidarr);} } } } //防刷新 $str=""; $file="log/ipdate.dat"; if(!file_exists("log")&#38;&#38;!is_dir("log"))mkdir("log",0777); if(!file_exists($file))file_put_contents($file,""); $allowTime = 120;//防刷新时间 $allowNum=10;//防刷新次数 $uri=$_SERVER['REQUEST_URI']; $checkip=md5($ip); $checkuri=md5($uri); $yesno=true; $ipdate=@file($file); foreach($ipdate [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
//查询禁止IP<br />
$ip =$_SERVER['REMOTE_ADDR'];<br />
$fileht=".htaccess2";<br />
if(!file_exists($fileht))file_put_contents($fileht,"");<br />
$filehtarr=@file($fileht);<br />
if(in_array($ip."\r\n",$filehtarr))die("Warning:"."&lt;br&gt;"."Your IP address are forbided by some reason, IF you have any question Pls emill to shop@mydalle.com!");</p>
<p>//加入禁止IP<br />
$time=time();<br />
$fileforbid="log/forbidchk.dat";<br />
if(file_exists($fileforbid))<br />
{ if($time-filemtime($fileforbid)&gt;60)unlink($fileforbid);<br />
else{<br />
$fileforbidarr=@file($fileforbid);<br />
if($ip==substr($fileforbidarr[0],0,strlen($ip)))<br />
{<br />
if($time-substr($fileforbidarr[1],0,strlen($time))&gt;600)unlink($fileforbid);<br />
elseif($fileforbidarr[2]&gt;600){file_put_contents($fileht,$ip."\r\n",FILE_APPEND);unlink($fileforbid);}<br />
else{$fileforbidarr[2]++;file_put_contents($fileforbid,$fileforbidarr);}<br />
}<br />
}<br />
}<br />
//防刷新<br />
$str="";<br />
$file="log/ipdate.dat";<br />
if(!file_exists("log")&amp;&amp;!is_dir("log"))mkdir("log",0777);<br />
if(!file_exists($file))file_put_contents($file,"");<br />
$allowTime = 120;//防刷新时间<br />
$allowNum=10;//防刷新次数<br />
$uri=$_SERVER['REQUEST_URI'];<br />
$checkip=md5($ip);<br />
$checkuri=md5($uri);<br />
$yesno=true;<br />
$ipdate=@file($file);<br />
foreach($ipdate as $k=&gt;$v)<br />
{ $iptem=substr($v,0,32);<br />
$uritem=substr($v,32,32);<br />
$timetem=substr($v,64,10);<br />
$numtem=substr($v,74);<br />
if($time-$timetem&lt;$allowTime){<br />
if($iptem!=$checkip)$str.=$v;<br />
else{<br />
$yesno=false;<br />
if($uritem!=$checkuri)$str.=$iptem.$checkuri.$time."1\r\n";<br />
elseif($numtem&lt;$allowNum)$str.=$iptem.$uritem.$timetem.($numtem+1)."\r\n";<br />
else<br />
{<br />
if(!file_exists($fileforbid)){$addforbidarr=array($ip."\r\n",time()."\r\n",1);file_put_contents($fileforbid,$addforbidarr);}<br />
file_put_contents("log/forbided_ip.log",$ip."--".date("Y-m-d H:i:s",time())."--".$uri."\r\n",FILE_APPEND);<br />
$timepass=$timetem+$allowTime-$time;<br />
die("Warning:"."&lt;br&gt;"."Sorry,you are forbided by refreshing frequently too much, Pls wait for ".$timepass." seconds to continue!");<br />
}<br />
}<br />
}<br />
}<br />
if($yesno) $str.=$checkip.$checkuri.$time."1\r\n";<br />
file_put_contents($file,$str);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-428.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php多维数组的搜索</title>
		<link>http://www.zui88.com/blog/view-425.html</link>
		<comments>http://www.zui88.com/blog/view-425.html#comments</comments>
		<pubDate>Mon, 17 Dec 2012 12:48:04 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[数组]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=425</guid>
		<description><![CDATA[1 php搜索多维数组的键值 如下面例子: $foo[1]['a']['xx'] = 'bar 1'; $foo[1]['b']['xx'] = 'bar 2'; $foo[2]['a']['bb'] = 'bar 3'; $foo[2]['a']['yy'] = 'bar 4'; $foo[3]['c']['dd'] = 'bar 3'; $foo[3]['f']['gg'] = 'bar 3'; $foo['info'][1] = 'bar 5'; 如果要查找 bar 3 怎么进行查找呢。有三个结果，而这三个结果都要，看下面的函数： ------------------------------------------------------------------------------------------------------------------------------- function array_search_re($needle, $haystack, $a=0, $nodes_temp=array()){ global $nodes_found; $a++; foreach ($haystack as $key1=&#62;$value1) {     $nodes_temp[$a] = $key1;     if [...]]]></description>
			<content:encoded><![CDATA[<p>1 php搜索多维数组的键值</p>
<p>如下面例子:</p>
<p>$foo[1]['a']['xx'] = 'bar 1';<br />
$foo[1]['b']['xx'] = 'bar 2';<br />
$foo[2]['a']['bb'] = 'bar 3';<br />
$foo[2]['a']['yy'] = 'bar 4';<br />
$foo[3]['c']['dd'] = 'bar 3';<br />
$foo[3]['f']['gg'] = 'bar 3';<br />
$foo['info'][1] = 'bar 5';</p>
<p>如果要查找 bar 3 怎么进行查找呢。有三个结果，而这三个结果都要，看下面的函数：<br />
-------------------------------------------------------------------------------------------------------------------------------<br />
function array_search_re($needle, $haystack, $a=0, $nodes_temp=array()){<br />
global $nodes_found;<br />
$a++;<br />
foreach ($haystack as $key1=&gt;$value1) {<br />
    $nodes_temp[$a] = $key1;<br />
    if (is_array($value1)){   <br />
      array_search_re($needle, $value1, $a, $nodes_temp);<br />
    }<br />
    else if ($value1 === $needle){<br />
      $nodes_found[] = $nodes_temp;<br />
    }<br />
}<br />
return $nodes_found;<br />
}<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
这个函数就可以把上面要查找到的内容全部返回出键名来<br />
$result = array_search_re('bar 3', $foo);</p>
<p>print_r($result);</p>
<p>输出结果为如下：<br />
Array ( [0] =&gt; Array ( [1] =&gt; 2 [2] =&gt; a [3] =&gt; bb )<br />
          [1] =&gt; Array ( [1] =&gt; 3 [2] =&gt; c [3] =&gt; dd )<br />
          [2] =&gt; Array ( [1] =&gt; 3 [2] =&gt; f [3] =&gt; gg )<br />
        )</p>
<p>1 php搜索多维数组的键名</p>
<p>function array_search_key($needle, $haystack){<br />
global $nodes_found;</p>
<p>foreach ($haystack as $key1=&gt;$value1) {<br />
 <br />
 if ($key1=== $needle){<br />
 <br />
  $nodes_found[] = $value1;<br />
       <br />
   }<br />
    if (is_array($value1)){   <br />
      array_search_key($needle, $value1);<br />
    }<br />
   <br />
   <br />
}</p>
<p>return $nodes_found;<br />
}<br />
$result = array_search_key('a', $foo);</p>
<p>print_r($result);</p>
<p>输出结果为如下：<br />
 </p>
<p>Array<br />
(<br />
    [0] =&gt; Array<br />
        (<br />
            [xx] =&gt; bar 1<br />
        )</p>
<p>    [1] =&gt; Array<br />
        (<br />
            [bb] =&gt; bar 3<br />
        )</p>
<p>    [2] =&gt; Array<br />
        (<br />
            [yy] =&gt; bar 4<br />
        )</p>
<p>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-425.html/feed</wfw:commentRss>
		<slash:comments>743</slash:comments>
		</item>
		<item>
		<title>php过滤客户提交参数，防注入</title>
		<link>http://www.zui88.com/blog/view-417.html</link>
		<comments>http://www.zui88.com/blog/view-417.html#comments</comments>
		<pubDate>Sat, 24 Nov 2012 09:16:40 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[过滤]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=417</guid>
		<description><![CDATA[以下代码实现过滤php的$_GET 和$_POST参数 /** * 安全防范 */ function Add_S($array) { foreach($array as $key=&#62;$value) { if(!is_array($value)) { $value = get_magic_quotes_gpc()?$value:addslashes($value); $array[$key]=filterHtml($value); } Else { Add_S($array[$key]); } } return $array; } function glstr($var) { if (is_array($var)) { return Add_S($var); } elseif(strlen($var)){ $var = get_magic_quotes_gpc()?$var:addslashes($var); $var = filterHtml($var); } return $var; } function filterHtml($html) { $farr = array( "/&#60;!DOCTYPE([^&#62;]*?)&#62;/eis", [...]]]></description>
			<content:encoded><![CDATA[<p>以下代码实现过滤php的$_GET 和$_POST参数</p>
<p>/**<br />
* 安全防范<br />
*/<br />
function Add_S($array)<br />
{<br />
foreach($array as $key=&gt;$value)<br />
{<br />
if(!is_array($value))<br />
{<br />
$value = get_magic_quotes_gpc()?$value:addslashes($value);<br />
$array[$key]=filterHtml($value);<br />
}<br />
Else<br />
{<br />
Add_S($array[$key]);<br />
}<br />
}<br />
return $array;<br />
}<br />
function glstr($var) {</p>
<p>if (is_array($var)) {<br />
return Add_S($var);<br />
}<br />
elseif(strlen($var)){<br />
$var = get_magic_quotes_gpc()?$var:addslashes($var);</p>
<p>$var = filterHtml($var);<br />
}<br />
return $var;<br />
}<br />
function filterHtml($html)<br />
{<br />
$farr = array(<br />
"/&lt;!DOCTYPE([^&gt;]*?)&gt;/eis",<br />
"/&lt;(\/?)(html|body|head|link|meta|base|input)([^&gt;]*?)&gt;/eis",<br />
"/&lt;(script|i?frame|style|title|form)(.*?)&lt;\/\\1&gt;/eis",<br />
"/(&lt;[^&gt;]*?\s+)on[a-z]+\s*?=(\"|')([^\\2]*)\\2([^&gt;]*?&gt;)/isU",//过滤javascript的on事件<br />
"/\s+/",//过滤多余的空白<br />
);<br />
$tarr = array(<br />
"",<br />
"",<br />
"",<br />
"\\1\\4",<br />
" ",<br />
);<br />
$html = preg_replace( $farr,$tarr,$html);<br />
return $html;<br />
}<br />
if (sizeof($_GET)) {<br />
foreach($_GET as $key =&gt; $value) {<br />
$_GET[$key] = glstr($value); //<br />
}</p>
<p>}<br />
if (sizeof($_POST)) {<br />
foreach($_POST as $key =&gt; $value) {<br />
$_POST[$key] = glstr($value); //<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-417.html/feed</wfw:commentRss>
		<slash:comments>343</slash:comments>
		</item>
		<item>
		<title>php计算代码运行时间和使用内存</title>
		<link>http://www.zui88.com/blog/view-415.html</link>
		<comments>http://www.zui88.com/blog/view-415.html#comments</comments>
		<pubDate>Wed, 14 Nov 2012 08:28:49 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[memory_get_usage]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=415</guid>
		<description><![CDATA[&#60;?php //开始计时 $HeaderTime = microtime(true);//参数true表示返回浮点数值 //代码 //... printf(" total run: %.2f s&#60;br&#62;". "memory usage: %.2f M&#60;br&#62; ", microtime(true)-$HeaderTime, memory_get_usage() / 1024 / 1024 ); ?&#62; 结果： total runtime: 1.47 s memory usage: 77.09 M]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zui88.com/blog/wp-admin/tools.php"></a></p>
<p><span style="font-size: small;"> &lt;?php</span></p>
<p><span style="font-size: small;">//开始计时</span></p>
<p><span style="font-size: small;"><br />
$HeaderTime = </span><span style="font-size: small;">micro<a href="http://www.linuxso.com/command/time.html" target="_blank"><span style="text-decoration: underline;">time</span></a>(true);//参数true表示返回浮点数值</span></p>
<p><span style="font-size: small;"> </span><span style="font-size: small;">//代码</span></p>
<p>//...</p>
<p><span style="font-size: small;">printf("    total run: %.2f s&lt;br&gt;".<br />
"memory usage: %.2f M&lt;br&gt; ",<br />
micro<a href="http://www.linuxso.com/command/time.html" target="_blank"><span style="text-decoration: underline;">time</span></a>(true)-$HeaderTime,<br />
memory_get_usage() / 1024 / 1024 );<br />
?&gt;<br />
结果：</span></p>
<p><span style="font-size: small;"> total runtime: 1.47 s</span></p>
<p><span style="font-size: small;">memory usage: 77.09 M </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-415.html/feed</wfw:commentRss>
		<slash:comments>454</slash:comments>
		</item>
		<item>
		<title>smarty模版使用php标签，如何获取模版变量</title>
		<link>http://www.zui88.com/blog/view-409.html</link>
		<comments>http://www.zui88.com/blog/view-409.html#comments</comments>
		<pubDate>Sat, 22 Sep 2012 03:54:23 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smarty]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=409</guid>
		<description><![CDATA[已经assign一个模版变量$assign,由于要做特殊的循环输出，使用for循环，因此使用到了php标签，但是php语句和模版语句的变量作用域是不同的，因此不能直接获取到 {{php}} for($i=0;$i&#60;count($assign);$i=$i+2){ echo ' &#60;ul&#62; &#60;li&#62; &#60;span class="zz_pic"&#62;&#60;a href="'._url('picture',array('col_key'=&#62;'cert','pic_id'=&#62;$assign[$i][pic_id])).'" title=""&#62;&#60;img src="uploads/thumb_'.$assign[$i][pic].'" alt=""&#62;&#60;/a&#62;&#60;/span&#62; &#60;span class="zz_title"&#62;&#60;a href="'._url('picture',array('col_key'=&#62;'cert','pic_id'=&#62;$assign[$i][pic_id])).'" title=""&#62;'.$assign[$i][title].'&#60;/a&#62;&#60;/span&#62; &#60;/li&#62; &#60;li&#62; &#60;span class="zz_pic"&#62;&#60;a href="'._url('picture',array('col_key'=&#62;'cert','pic_id'=&#62;$assign[$i+1][pic_id])).'" title=""&#62;&#60;img src="uploads/thumb_'.$assign[$i+1][pic].'" alt=""&#62;&#60;/a&#62;&#60;/span&#62; &#60;span class="zz_title"&#62;&#60;a href="'._url('picture',array('col_key'=&#62;'cert','pic_id'=&#62;$assign[$i+1][pic_id])).'" title=""&#62;'.$assign[$i+1][title].'&#60;/a&#62;&#60;/span&#62; &#60;/li&#62;i&#62; &#60;/ul&#62;';} {{/php}} 解决的方法是：模版变量全部存在smarty的一个对象里面；只要在for之前进行赋值：$assign = $this-&#62;_tpl_vars[assign]; {{php}} $assign = $this-&#62;_tpl_vars[assign]; for($i=0;$i&#60;count($assign);$i=$i+2){ echo ' &#60;ul&#62; &#60;li&#62; &#60;span class="zz_pic"&#62;&#60;a href="'._url('picture',array('col_key'=&#62;'cert','pic_id'=&#62;$assign[$i][pic_id])).'" title=""&#62;&#60;img src="uploads/thumb_'.$assign[$i][pic].'" alt=""&#62;&#60;/a&#62;&#60;/span&#62; &#60;span class="zz_title"&#62;&#60;a href="'._url('picture',array('col_key'=&#62;'cert','pic_id'=&#62;$assign[$i][pic_id])).'" title=""&#62;'.$assign[$i][title].'&#60;/a&#62;&#60;/span&#62; &#60;/li&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>已经assign一个模版变量$assign,由于要做特殊的循环输出，使用for循环，因此使用到了php标签，但是php语句和模版语句的变量作用域是不同的，因此不能直接获取到</p>
<p>  {{php}}</p>
<p>for($i=0;$i&lt;count($assign);$i=$i+2){<br />
echo '<br />
&lt;ul&gt;<br />
&lt;li&gt; &lt;span class="zz_pic"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i][pic_id])).'" title=""&gt;&lt;img src="uploads/thumb_'.$assign[$i][pic].'" alt=""&gt;&lt;/a&gt;&lt;/span&gt; &lt;span class="zz_title"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i][pic_id])).'" title=""&gt;'.$assign[$i][title].'&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;<br />
&lt;li&gt; &lt;span class="zz_pic"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i+1][pic_id])).'" title=""&gt;&lt;img src="uploads/thumb_'.$assign[$i+1][pic].'" alt=""&gt;&lt;/a&gt;&lt;/span&gt; &lt;span class="zz_title"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i+1][pic_id])).'" title=""&gt;'.$assign[$i+1][title].'&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;i&gt;</p>
<p>&lt;/ul&gt;';}<br />
{{/php}}</p>
<p>解决的方法是：模版变量全部存在smarty的一个对象里面；只要在for之前进行赋值：$assign = $this-&gt;_tpl_vars[assign];</p>
<p>{{php}}<br />
$assign = $this-&gt;_tpl_vars[assign];<br />
for($i=0;$i&lt;count($assign);$i=$i+2){<br />
echo '<br />
&lt;ul&gt;<br />
&lt;li&gt; &lt;span class="zz_pic"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i][pic_id])).'" title=""&gt;&lt;img src="uploads/thumb_'.$assign[$i][pic].'" alt=""&gt;&lt;/a&gt;&lt;/span&gt; &lt;span class="zz_title"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i][pic_id])).'" title=""&gt;'.$assign[$i][title].'&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;<br />
&lt;li&gt; &lt;span class="zz_pic"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i+1][pic_id])).'" title=""&gt;&lt;img src="uploads/thumb_'.$assign[$i+1][pic].'" alt=""&gt;&lt;/a&gt;&lt;/span&gt; &lt;span class="zz_title"&gt;&lt;a href="'._url('picture',array('col_key'=&gt;'cert','pic_id'=&gt;$assign[$i+1][pic_id])).'" title=""&gt;'.$assign[$i+1][title].'&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;i&gt;</p>
<p>&lt;/ul&gt;';}<br />
{{/php}}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-409.html/feed</wfw:commentRss>
		<slash:comments>502</slash:comments>
		</item>
		<item>
		<title>好用的smarty标签：capture，literal，fetch</title>
		<link>http://www.zui88.com/blog/view-407.html</link>
		<comments>http://www.zui88.com/blog/view-407.html#comments</comments>
		<pubDate>Sat, 22 Sep 2012 03:16:24 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[smarty]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=407</guid>
		<description><![CDATA[1，capture标签 capture的中文意思是抓取，它的作用是抓取模板输出的数据，当我们需要它的时候，调用它，以得到抓取数据的目的。例子： {capture name=test} &#60;img src=”testimg.jpg”&#62; {/capture} &#60;div class=”image”&#62; {$smarty.capture.test} &#60;/div&#62; 说明： 在{capture name=”test”}和{/capture}之间的内容被存储到变量$test中，该变量由name属性指定.在模板中通过 $smarty.capture.test 访问该变量.如果没有指定name 属性,函数默认将使用”default” 作为参数,这一点很jquery中的clone 2，config_load标签 config_load可以直接将文件中的内容读取出来，这样可以省掉assign这一步。 test.csv: pageTitle = ”config_load_test” bodyBgColor = ”#eeeeee” img = ”girl.jpg” width=”100″ height=”100″ index.tpl: {config_load file=”test.csv”} &#60;html&#62; &#60;title&#62;{#pageTitle#}&#60;/title&#62; &#60;body bgcolor=”{#bodyBgColor#}”&#62; &#60;img src=”{#img#}” width=”{#width#}” height=”{#height#}”&#62; &#60;/body&#62; &#60;/html&#62; 上述过程中如果出现这样的问题Warning: Smarty error: unable to read resource, 请查看一下，你的test.csv是不是放在smarty的配置目录中，默认配置目录是configs /** * The directory where config files are located. * * @var string */ var $config_dir      =  ’configs’; 3，literal标签的使用 做web开发，难免会写一些JS，jquery代码。js和jquery里面都会｛｝这样的符号，smarty会不会把它理解成php的变量呢？如果你不加literal标签的话，smarty肯定会把它理解变量了，加了就不会，例如： {literal} function getAbsLeft(e){ var l=e.offsetLeft; while(e=e.offsetParent)l+=e.offsetLeft; return l; } function getAbsTop(e){ var t=e.offsetTop; [...]]]></description>
			<content:encoded><![CDATA[<div id="article_content" class="article_content">
<p><span><strong>1，capture标签</strong></p>
<p>capture的中文意思是抓取，它的作用是抓取模板输出的数据，当我们需要它的时候，调用它，以得到抓取数据的目的。例子：</p>
<div>
<ol>
<li>{capture name=test}</li>
<li>&lt;img src=”testimg.jpg”&gt;</li>
<li>{/capture}</li>
<li>&lt;div class=”image”&gt;</li>
<li>{$smarty.capture.test}</li>
<li>&lt;/div&gt;</li>
</ol>
</div>
<p>说明：<br />
在{capture name=”test”}和{/capture}之间的内容被存储到变量$test中，该变量由name属性指定.在模板中通过  $smarty.capture.test 访问该变量.如果没有指定name 属性,函数默认将使用”default”  作为参数,这一点很jquery中的clone</p>
<p><strong>2，config_load标签</strong></p>
<p>config_load可以直接将文件中的内容读取出来，这样可以省掉assign这一步。</p>
<div>
<ol>
<li>test.csv:</li>
<li>pageTitle = ”config_load_test”</li>
<li>bodyBgColor = ”#eeeeee”</li>
<li>img = ”girl.jpg”</li>
<li>width=”100″</li>
<li>height=”100″</li>
<li>index.tpl:</li>
<li>{config_load file=”test.csv”}</li>
<li>&lt;html&gt;</li>
<li>&lt;title&gt;{#pageTitle#}&lt;/title&gt;</li>
<li>&lt;body bgcolor=”{#bodyBgColor#}”&gt;</li>
<li>&lt;img src=”{#img#}” width=”{#width#}” height=”{#height#}”&gt;</li>
<li>&lt;/body&gt;</li>
<li>&lt;/html&gt;</li>
</ol>
</div>
<p><strong>上述过程中如果出现这样的问题Warning: Smarty error: unable to read resource,  请查看一下，你的test.csv是不是放在smarty的配置目录中，默认配置目录是configs</strong></p>
<div>
<ol>
<li>/**</li>
<li>* The directory where config files are located.</li>
<li>*</li>
<li>* @var string</li>
<li>*/</li>
<li>var $config_dir      =  ’configs’;</li>
</ol>
</div>
<p><strong>3，literal标签的使用</strong></p>
<p>做web开发，难免会写一些JS，jquery代码。js和jquery里面都会｛｝这样的符号，smarty会不会把它理解成php的变量呢？如果你不加literal标签的话，smarty肯定会把它理解变量了，加了就不会，例如：</p>
<div>
<ol>
<li>{literal}</li>
<li>function getAbsLeft(e){</li>
<li>var l=e.offsetLeft;</li>
<li>while(e=e.offsetParent)l+=e.offsetLeft;</li>
<li>return l;</li>
<li>}</li>
<li>function getAbsTop(e){</li>
<li>var t=e.offsetTop;</li>
<li>while(e=e.offsetParent)t+=e.offsetTop;</li>
<li>return t;</li>
<li>}</li>
<li>{/literal}</li>
</ol>
</div>
<p><strong>4，php标签</strong></p>
<p>当你习惯了assign后，你有没有想过，在模板文件里面直接写php代码呢，我想有的时候你肯定很想吧。例如：</p>
<div>
<ol>
<li>{php}</li>
<li>global $result;</li>
<li>foreach($result as $key=&gt;$value){</li>
<li>echo ”key=$key,value=&gt;$value&lt;br&gt;”;</li>
<li>}</li>
<li>{/php}</li>
</ol>
</div>
<p><strong>5，strip标签</strong></p>
<p>strip标签去除标签内的空格和回车，这一点我觉得，做手机开发的朋友肯定用的到，因为全角空格有可能会导致整个页面错乱，甚至是一个空白页面。手机屏幕小，估计用smarty的可能性也比较小。</p>
<div>
<ol>
<li>{strip}</li>
<li>&lt;div&gt;</li>
<li>&lt;font color=”red”&gt;strip&lt;/font&gt;</li>
<li>&lt;/div&gt;</li>
<li>{/strip}</li>
</ol>
</div>
<p><strong>6,fetch标签</strong></p>
<p>fetch标签根php的file_get_contents挺想的，都可以把文件中的内容读出来，并且是个字符串的形势</p>
<div>
<ol>
<li>{fetch file=”./aaaa.txt” assign=”result”}</li>
<li>{if is_array($result)}</li>
<li>&lt;b&gt;is array&lt;/b&gt;</li>
<li>{else if}</li>
<li>&lt;b&gt;not array&lt;/b&gt;</li>
<li>{/if}</li>
</ol>
</div>
<p></span></p>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-407.html/feed</wfw:commentRss>
		<slash:comments>481</slash:comments>
		</item>
		<item>
		<title>htaccess实现域名绑定，拒绝其他域名访问</title>
		<link>http://www.zui88.com/blog/view-405.html</link>
		<comments>http://www.zui88.com/blog/view-405.html#comments</comments>
		<pubDate>Mon, 17 Sep 2012 09:12:11 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=405</guid>
		<description><![CDATA[独立ip的主机，只要其他域名指向该ip都是可以访问的，多域名访问会产生大量重复内容，对seo非常不利，我们可以利用htaccess实现域名绑定，拒绝其他域名访问 在站点根目录建立.htaccess文件，写入如下内容： RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} !www.zui88.com [NC] RewriteCond %{HTTP_HOST} !zui88.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^.* – [F,L] 这样实现的结果是只能通过www.zui88.com,zui88.com来访问站点，用其他的HOST访问都会显示403Forbidden。 其中：{HTTP_HOST}代表HTTP协议GET动作同时传递的Host的值，[NC]代表忽略大小写；[F]代表动作为禁止；[L]代表最终匹配。]]></description>
			<content:encoded><![CDATA[<p>独立ip的主机，只要其他域名指向该ip都是可以访问的，多域名访问会产生大量重复内容，对seo非常不利，我们可以利用htaccess实现域名绑定，拒绝其他域名访问</p>
<p>在站点根目录建立.htaccess文件，写入如下内容：</p>
<p><span style="color: #ff0000;">RewriteEngine on<br />
RewriteBase /<br />
RewriteCond  %{HTTP_HOST} !www.zui88.com [NC]<br />
RewriteCond %{HTTP_HOST} !zui88.com  [NC]<br />
RewriteCond %{HTTP_HOST}  !^$<br />
RewriteRule ^.* – [F,L]</span></p>
<p>这样实现的结果是只能通过www.zui88.com,zui88.com来访问站点，用其他的HOST访问都会显示403Forbidden。</p>
<p>其中：{HTTP_HOST}代表HTTP协议GET动作同时传递的Host的值，[NC]代表忽略大小写；[F]代表动作为禁止；[L]代表最终匹配。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-405.html/feed</wfw:commentRss>
		<slash:comments>459</slash:comments>
		</item>
		<item>
		<title>smarty 利用@ 在模版完整打印多维数组</title>
		<link>http://www.zui88.com/blog/view-388.html</link>
		<comments>http://www.zui88.com/blog/view-388.html#comments</comments>
		<pubDate>Sat, 21 Jul 2012 01:41:11 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[smarty]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=388</guid>
		<description><![CDATA[有时候我们希望直接在模版上打印数组变量以供调试，打印的方式可以用php自带的print_r或者是自己写的调试函数，如debug(). 如果直接这样打印多维数组 {{$var&#124;print_r}}，在模版看到的结果会是遍历后的所有的value，不会显示完整的数组结构，正确的方法是在函数前加个@，意思是把变量作为整体去对待 {{$var&#124;@print_r}}]]></description>
			<content:encoded><![CDATA[<p>有时候我们希望直接在模版上打印数组变量以供调试，打印的方式可以用php自带的print_r或者是自己写的调试函数，如debug().</p>
<p>如果直接这样打印多维数组 {{$var|print_r}}，在模版看到的结果会是遍历后的所有的value，不会显示完整的数组结构，正确的方法是在函数前加个@，意思是把变量作为整体去对待</p>
<p>{{$var|@print_r}}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-388.html/feed</wfw:commentRss>
		<slash:comments>613</slash:comments>
		</item>
		<item>
		<title>php利用谷歌实现自动在线翻译</title>
		<link>http://www.zui88.com/blog/view-386.html</link>
		<comments>http://www.zui88.com/blog/view-386.html#comments</comments>
		<pubDate>Sat, 14 Jul 2012 07:41:19 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=386</guid>
		<description><![CDATA[php利用谷歌实现自动翻译，以下是两种实现的方式，php文档用utf8就不会出现乱码问题 第一种利用curl： function translate($text,$language='zh-cn&#124;en'){ if(empty($text))return false; @set_time_limit(0); $html = ""; $ch=curl_init("http://google.com/translate_t?langpair=".urlencode($language)."&#38;text=".urlencode($text)); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER, 0); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); $html=curl_exec($ch); if(curl_errno($ch))$html = ""; curl_close($ch); if(!empty($html)){ $x=explode("&#60;/span&#62;&#60;/span&#62;&#60;/div&#62;&#60;/div&#62;",$html); $x=explode("onmouseout=\"this.style.backgroundColor='#fff'\"&#62;",$x[0]); return $x[1]; }else{ return false; } } echo translate('去'); 第二种：利用get方式 function googleTran($text){ if(empty($text)) return ""; //反间碟 $wf=@file_get_contents('http://translate.google.cn/translate_t?sl=zh-CN&#38;tl=en&#38;text='.$text.'#'); if (false===$wf&#124;&#124;empty($wf)){ return false; } //截取相关信息 $return = ""; $star="style.backgroundColor='\#fff'\"&#62;"; $end="&#60;/span&#62;&#60;/span&#62;&#60;/div&#62;"; $p = "#{$star}(.*){$end}#iU";//i表示忽略大小写，U禁止贪婪匹配 if(preg_match_all($p,$wf,$rs)) [...]]]></description>
			<content:encoded><![CDATA[<p>php利用谷歌实现自动翻译，以下是两种实现的方式，php文档用utf8就不会出现乱码问题</p>
<p>第一种利用curl：</p>
<p>function translate($text,$language='zh-cn|en'){<br />
if(empty($text))return false;<br />
@set_time_limit(0);<br />
$html = "";<br />
$ch=curl_init("http://google.com/translate_t?langpair=".urlencode($language)."&amp;text=".urlencode($text));<br />
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);<br />
curl_setopt($ch,CURLOPT_HEADER, 0);<br />
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);<br />
$html=curl_exec($ch);<br />
if(curl_errno($ch))$html = "";<br />
curl_close($ch);<br />
if(!empty($html)){<br />
$x=explode("&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;",$html);<br />
$x=explode("onmouseout=\"this.style.backgroundColor='#fff'\"&gt;",$x[0]);<br />
return $x[1];<br />
}else{<br />
return false;<br />
}<br />
}<br />
echo translate('去');<br />
第二种：利用get方式<br />
function googleTran($text){<br />
if(empty($text)) return "";<br />
//反间碟<br />
$wf=@file_get_contents('http://translate.google.cn/translate_t?sl=zh-CN&amp;tl=en&amp;text='.$text.'#');<br />
if (false===$wf||empty($wf)){<br />
return false;<br />
}</p>
<p>//截取相关信息<br />
$return = "";</p>
<p>$star="style.backgroundColor='\#fff'\"&gt;";</p>
<p>$end="&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;";<br />
$p = "#{$star}(.*){$end}#iU";//i表示忽略大小写，U禁止贪婪匹配<br />
if(preg_match_all($p,$wf,$rs))<br />
{ print_r($rs);<br />
return $rs[1][0];}</p>
<p>}</p>
<p>echo googleTran('去');</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-386.html/feed</wfw:commentRss>
		<slash:comments>249</slash:comments>
		</item>
	</channel>
</rss>
