<?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; php</title>
	<atom:link href="http://www.zui88.com/view-tag/php/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多维数组的搜索</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>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>php字符串截取函数,自动清除网页标签</title>
		<link>http://www.zui88.com/blog/view-382.html</link>
		<comments>http://www.zui88.com/blog/view-382.html#comments</comments>
		<pubDate>Thu, 07 Jun 2012 09:40:29 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=382</guid>
		<description><![CDATA[/** * 字符串截取函数 自动清除网页标签 **/ Function str_cut($string, $length = 80, $etc = '...', $code = 'UTF-8') { $string = strip_tags(preg_replace('!\s+!', $string, ' ')); if ($length == 0) return ''; if ($code == 'UTF-8') { $pa = "/[\x01-\x7f]&#124;[\xc2-\xdf][\x80-\xbf]&#124;\xe0[\xa0-\xbf][\x80-\xbf]&#124;[\xe1-\xef][\x80-\xbf][\x80-\xbf]&#124;\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]&#124;[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; } else { $pa = "/[\x01-\x7f]&#124;[\xa1-\xff][\xa1-\xff]/"; } preg_match_all($pa, $string, $t_string); if (count($t_string[0]) &#62; $length) return join('', array_slice($t_string[0], 0, [...]]]></description>
			<content:encoded><![CDATA[<p>/**<br />
* 字符串截取函数 自动清除网页标签<br />
**/<br />
Function str_cut($string, $length = 80, $etc = '...', $code = 'UTF-8')<br />
{<br />
$string = strip_tags(preg_replace('!\s+!', $string, ' '));<br />
if ($length == 0)<br />
return '';<br />
if ($code == 'UTF-8') {<br />
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";<br />
}<br />
else {<br />
$pa = "/[\x01-\x7f]|[\xa1-\xff][\xa1-\xff]/";<br />
}<br />
preg_match_all($pa, $string, $t_string);<br />
if (count($t_string[0]) &gt; $length)<br />
return join('', array_slice($t_string[0], 0, $length)) . $etc;<br />
return join('', array_slice($t_string[0], 0, $length));<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-382.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>php清空某个目录的方法</title>
		<link>http://www.zui88.com/blog/view-378.html</link>
		<comments>http://www.zui88.com/blog/view-378.html#comments</comments>
		<pubDate>Mon, 04 Jun 2012 07:05:50 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=378</guid>
		<description><![CDATA[以下代码可以清空多层的目录结构： function del_dir($dir){ { if (!$dir) { return ; } $cacheDir = $dir; $dh = opendir($cacheDir); while ( $file = readdir($dh) ) { if (($file == '.') &#124;&#124; ($file == '..')) { continue; } if (file_exists( $cacheDir .'/'.$file)) { if(is_dir( $cacheDir .'/'.$file)){ del_dir($cacheDir .'/'.$file); }elseif (!unlink($cacheDir .'/'. $file)) { //删除完操作 } } } } }]]></description>
			<content:encoded><![CDATA[<p>以下代码可以清空多层的目录结构：</p>
<p>function del_dir($dir){<br />
{<br />
if (!$dir) { return ; }<br />
$cacheDir = $dir;<br />
$dh = opendir($cacheDir);<br />
while ( $file = readdir($dh) ) {</p>
<p>if (($file == '.') || ($file == '..')) { continue; }</p>
<p>if (file_exists( $cacheDir .'/'.$file)) {<br />
if(is_dir( $cacheDir .'/'.$file)){<br />
del_dir($cacheDir .'/'.$file);<br />
}elseif (!unlink($cacheDir .'/'. $file)) {</p>
<p>//删除完操作<br />
}<br />
}<br />
}</p>
<p>}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-378.html/feed</wfw:commentRss>
		<slash:comments>82</slash:comments>
		</item>
		<item>
		<title>phpmyadmin导出的sql如何通过php导入</title>
		<link>http://www.zui88.com/blog/view-374.html</link>
		<comments>http://www.zui88.com/blog/view-374.html#comments</comments>
		<pubDate>Mon, 04 Jun 2012 04:15:01 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=374</guid>
		<description><![CDATA[以下函数可以直接把从phpmyadmin导出的sql文件直接通过php插入数据库： //$file表示通过读取sql文件返回的字符串，比如$file2=file_get_contents('db.sql'); function import($file2){ $Db = new Db(); $file2=explode("\n",$file2);//将文件内容按行读入到数组 $c1=count($file2); for($j=0;$j&#60;$c1;$j++) { $ck=substr($file2[$j],0,4);//取每行的前4个字符 if( ereg("#",$ck)&#124;&#124;ereg("--",$ck) )//去掉注释 { continue; } $arr[]=$file2[$j];//将去掉注释的文件内容按行读入数组$arr,数组每个元素对应一行 } $read=implode("\n",$arr); //重新组织文件内容到一个字符串,(按照原来分好的一行一行的) $sql=str_replace("\r",'',$read);//去掉"\r(回车符)" $detail=explode(";\n",$sql); //将经上述整理过的文件内容再次按一条完整的sql语句(以;和\n分隔)导入到数组$detail, //此时数组detail的每个元素对应一条完整的sql语句 $count=count($detail); for($i=0;$i&#60;$count;$i++) { $sql=str_replace("\r",'',$detail[$i]);//去掉每行sql中的回车符 $sql=str_replace("\n",'',$sql);//去掉换行符 $sql=trim($sql);//去掉前后空格 //现在的$sql $Db-&#62;query($sql); } }]]></description>
			<content:encoded><![CDATA[<p>以下函数可以直接把从phpmyadmin导出的sql文件直接通过php插入数据库：</p>
<p>//$file表示通过读取sql文件返回的字符串，比如$file2=file_get_contents('db.sql');</p>
<p>function import($file2){</p>
<p>$Db = new Db();<br />
$file2=explode("\n",$file2);//将文件内容按行读入到数组</p>
<p>$c1=count($file2);<br />
for($j=0;$j&lt;$c1;$j++)<br />
{<br />
$ck=substr($file2[$j],0,4);//取每行的前4个字符<br />
if( ereg("#",$ck)||ereg("--",$ck) )//去掉注释<br />
{<br />
continue;<br />
}<br />
$arr[]=$file2[$j];//将去掉注释的文件内容按行读入数组$arr,数组每个元素对应一行<br />
}<br />
$read=implode("\n",$arr); //重新组织文件内容到一个字符串,(按照原来分好的一行一行的)<br />
$sql=str_replace("\r",'',$read);//去掉"\r(回车符)"</p>
<p>$detail=explode(";\n",$sql);<br />
//将经上述整理过的文件内容再次按一条完整的sql语句(以;和\n分隔)导入到数组$detail,<br />
//此时数组detail的每个元素对应一条完整的sql语句<br />
$count=count($detail);<br />
for($i=0;$i&lt;$count;$i++)<br />
{<br />
$sql=str_replace("\r",'',$detail[$i]);//去掉每行sql中的回车符<br />
$sql=str_replace("\n",'',$sql);//去掉换行符<br />
$sql=trim($sql);//去掉前后空格<br />
//现在的$sql<br />
$Db-&gt;query($sql);</p>
<p>}</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-374.html/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>php date函数的时区问题，输出时间有误</title>
		<link>http://www.zui88.com/blog/view-372.html</link>
		<comments>http://www.zui88.com/blog/view-372.html#comments</comments>
		<pubDate>Sat, 02 Jun 2012 02:16:24 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=372</guid>
		<description><![CDATA[问题：echo date('o-m-j H:i'); 输出结果与本地时间相差8小时。 原因：时区未正确设置。 两种解决方法: 1.加入date_default_timezone_set('Asia/Shanghai'); 2. 修改php.ini [Date] ; Defines the default timezone used by the date functions date.timezone = PRC 注:PRC为中化人民共和国]]></description>
			<content:encoded><![CDATA[<p>问题：echo date('o-m-j H:i'); 输出结果与本地时间相差8小时。<br />
原因：时区未正确设置。<br />
两种解决方法:</p>
<p>1.加入date_default_timezone_set('Asia/Shanghai');<br />
2. 修改php.ini<br />
<span style="font-family: Courier New;"> [Date]<br />
; Defines the default timezone used by the date functions<br />
date.timezone = PRC <em>注:PRC为中化人民共和国</em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-372.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>php使用mail函数发送邮件，解决乱码问题</title>
		<link>http://www.zui88.com/blog/view-370.html</link>
		<comments>http://www.zui88.com/blog/view-370.html#comments</comments>
		<pubDate>Fri, 01 Jun 2012 03:03:27 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[乱码]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=370</guid>
		<description><![CDATA[$to = 'sales@zui88.com'; $subject = "=?UTF-8?B?".base64_encode('网站收到一个新信息')."?="; $message = " 用户姓名：{$_POST['name']}\n 用户邮箱：{$_POST['email']}\n 用户电话：{$_POST['contact']}\n 留言内容：{$_POST['content']} "; $headers = 'From: webmaster@zui88.com' . "\r\n" . 'Reply-To: webmaster@zui88.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; mail($to, $subject, $message, $headers);]]></description>
			<content:encoded><![CDATA[<p>$to = 'sales@zui88.com';<br />
$subject = "=?UTF-8?B?".base64_encode('网站收到一个新信息')."?=";<br />
$message = "<br />
用户姓名：{$_POST['name']}\n<br />
用户邮箱：{$_POST['email']}\n<br />
用户电话：{$_POST['contact']}\n<br />
留言内容：{$_POST['content']}<br />
";<br />
$headers = 'From: webmaster@zui88.com' . "\r\n" .<br />
'Reply-To: webmaster@zui88.com' . "\r\n" .<br />
'X-Mailer: PHP/' . phpversion();<br />
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";</p>
<p>mail($to, $subject, $message, $headers);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-370.html/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>移植方便的php数据库操作类，建表增删改查</title>
		<link>http://www.zui88.com/blog/view-368.html</link>
		<comments>http://www.zui88.com/blog/view-368.html#comments</comments>
		<pubDate>Wed, 30 May 2012 09:46:53 +0000</pubDate>
		<dc:creator>lin</dc:creator>
				<category><![CDATA[后端程序]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.zui88.com/blog/?p=368</guid>
		<description><![CDATA[&#60;?php /** * * 数据操作类 * @author Xiaoqiang * @link // * @copyright Xiaoqiang * @version Svn $Id$ * @package */ class Db { var $links; // 构造函数，初始化数据库（主机,用户名,密码,数据库名） function __construct() { $this-&#62;links = mysql_connect(DB_HOST, DB_USER, DB_PWD); if(DEBUG){ mysql_select_db(DB_NAME) or die('ERROR:'.mysql_error()); } else{ mysql_select_db(DB_NAME); } $char_sql = "SET NAMES '" . CHARSET . "'"; $this-&#62;query($char_sql); } [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
/**<br />
*<br />
* 数据操作类<br />
* @author Xiaoqiang<br />
* @link //<br />
* @copyright Xiaoqiang<br />
* @version Svn $Id$<br />
* @package<br />
*/<br />
class Db {</p>
<p>var $links;<br />
// 构造函数，初始化数据库（主机,用户名,密码,数据库名）<br />
function __construct() {</p>
<p>$this-&gt;links = mysql_connect(DB_HOST, DB_USER, DB_PWD);<br />
if(DEBUG){<br />
mysql_select_db(DB_NAME) or die('ERROR:'.mysql_error());<br />
}<br />
else{<br />
mysql_select_db(DB_NAME);<br />
}<br />
$char_sql = "SET NAMES '" . CHARSET . "'";<br />
$this-&gt;query($char_sql);<br />
}</p>
<p>/**<br />
* ****************** 操作 ******************<br />
*/<br />
/**<br />
* 增删改查操作方法<br />
* 输入sql语句<br />
* 返回布尔值或结果集$row<br />
*/<br />
function query($sql) {<br />
if(DEBUG){<br />
$render =  mysql_query($sql) or die('query ERROR:'.mysql_error()."&lt;br&gt;sql语句出错：" . $sql);<br />
return $render;<br />
}<br />
else{<br />
return mysql_query($sql);<br />
}<br />
}<br />
/**<br />
* 计算行数方法<br />
* 输入<br />
* 结果数组<br />
*/<br />
function count($table,$condition='1') {</p>
<p>$sql = "select count(*) from `".DB_PREFIX.$table."` where $condition";<br />
$result = $this-&gt;select($sql);<br />
return $result[0]['count(*)'];<br />
}<br />
/**<br />
* 原始的sql语句查操作方法<br />
* 输入sql语句<br />
* 结果数组<br />
*/<br />
function select($sql) {<br />
$row = $this-&gt;query($sql);<br />
$results = array();<br />
while($arr = $this-&gt;fetch($row)){<br />
$results[] = $arr;<br />
}<br />
//$this-&gt;free_result($row);<br />
return $results;<br />
}</p>
<p>/**<br />
* 检查某字段是否存在某值<br />
* @param 输入表名.字段,值<br />
* @return id 或者 false<br />
**/<br />
function check_exists($table,$val){<br />
$render = false;<br />
$tab = explode('.',$table);<br />
if($tab['1'] &amp;&amp; $tab['1']!='id'){<br />
$fields = $tab['1'];<br />
$table = "{$tab[0]}.id,{$fields}";<br />
}<br />
else{<br />
$fields = 'id';<br />
$table = $tab[0].".id";<br />
}<br />
$condition = "`$fields` = '{$val}'";<br />
$detail = $this-&gt;read($table,$condition);<br />
if($detail[$fields]){<br />
$render = $detail['id'];<br />
}<br />
return $render;<br />
}</p>
<p>/**<br />
* 查询多条数据方法<br />
* 输入表名.字段，字段;查询条件，条数<br />
* 如果条件是数组，则进入高级搜索模式<br />
* 返回结果数组<br />
*/<br />
function readall($table,$condition='1',$limit='') {<br />
$tab = explode('.',$table);<br />
$table = $tab['0'];<br />
if($tab['1']){<br />
$fields = $tab['1'];<br />
$fields_array  =explode(',',$fields);<br />
$fields = '';<br />
foreach( $fields_array as $one){<br />
$fields .= "`$one`,";<br />
}<br />
$fields = rtrim($fields,',');<br />
}<br />
else{<br />
$fields = '*';<br />
}<br />
if(is_array($condition)){<br />
$condition = $this-&gt;parse_condition($condition);<br />
}<br />
$sql = "select $fields from `".DB_PREFIX.$table."` where $condition";<br />
if($limit)$sql .= " limit $limit";<br />
return $this-&gt;select($sql);<br />
}<br />
/**<br />
* 查询单条数据方法<br />
* 输入表名.字段，字段;查询条件<br />
* 返回结果数组<br />
*/<br />
function read($table,$condition='1') {<br />
$render = $this -&gt;readall($table,$condition,1);<br />
return $render[0];<br />
}<br />
/**<br />
* 修改数据方法<br />
* 输入表名，插入数据array('字段'=&gt;'值'),条件<br />
* 返回布尔值<br />
*/<br />
function update($table,$data,$condition ) {</p>
<p>$set = '';<br />
foreach( $data as $key=&gt;$val){<br />
$set .= "`$key` = '".$val."',";<br />
}<br />
$set = rtrim($set,',');<br />
if(is_array($condition)){<br />
$condition = $this-&gt;parse_condition($condition);<br />
}<br />
$sql = "update `".DB_PREFIX.$table."` set $set where $condition";<br />
return $this-&gt;query($sql);<br />
}<br />
/**<br />
* 插入数据方法<br />
* 输入表名，数据array('字段'=&gt;'值')<br />
* 返回布尔<br />
*/<br />
function insert($table,$data) {</p>
<p>$fields = array();<br />
$values = array();</p>
<p>foreach( $data as $key=&gt; $val){<br />
if(is_array($val)){<br />
$_values = array();<br />
$_fields = array();<br />
foreach( $val as $k=&gt; $v){<br />
$_fields[]= "`$k`";<br />
$_values[]= "'{$v}'";<br />
}<br />
$fields = $_fields;<br />
$values[] = '('.implode(',',$_values).')';<br />
}<br />
else{<br />
$fields[] = "`$key`";<br />
$values[] = "'{$val}'";<br />
}<br />
}<br />
$fields = implode(',',$fields);<br />
$values = implode(',',$values);<br />
$sql = "insert into `".DB_PREFIX.$table."` ($fields) values($values)";<br />
return $this-&gt;query($sql);<br />
}<br />
/**<br />
* 删除数据方法<br />
* 输入表名，条件<br />
* 返回bool<br />
*/<br />
function delete($table,$condition) {</p>
<p>if(empty($condition)){<br />
die('条件不能为空');<br />
}<br />
if(is_array($condition)){<br />
$condition = $this-&gt;parse_condition($condition);<br />
}<br />
$sql = "delete from `".DB_PREFIX.$table."` where $condition";<br />
return $this-&gt;query($sql);<br />
}<br />
/**<br />
* 解析条件的函数<br />
* @param 条件数组<br />
* &lt;code&gt;<br />
$arr[] = "`id`==0";<br />
$arr[] = "`id`==5";<br />
$arr['id'] = "5";<br />
$arr['or'][] = "`id`!=2";<br />
$arr['or'][] = "`id`!=1";<br />
$arr['or'][] = "`id`!=2";<br />
$arr['groups'][]='id';<br />
$arr['orders']['id']='asc';<br />
$arr['orders']['td']='DESC';<br />
* &lt;/code&gt;<br />
* @return str<br />
**/<br />
function parse_condition($condition){<br />
$and = '1';<br />
$or = '0';<br />
$groups = array();<br />
$orders = array();<br />
foreach( $condition as $key=&gt;$val){<br />
if(is_numeric($key)){<br />
$and .= " and $val";<br />
}<br />
elseif(strtolower($key)== 'or'){<br />
//处理or条件<br />
if(is_array($val)){<br />
foreach( $val as $k=&gt;$v){<br />
if(is_numeric($k)){<br />
$or .= " or {$v}";<br />
}<br />
elseif(is_array($v)){<br />
$v = implode(',',$v);<br />
$or .= " or `$k` in ($v)";<br />
}else{<br />
$or .= " or `$k='{$v}'";<br />
}<br />
}</p>
<p>}else{<br />
$or .= " or $val'";<br />
}<br />
}<br />
elseif(strtolower($key)== 'groups'){<br />
//处理group by<br />
foreach( $val as $k=&gt;$v){<br />
$groups[] = $v;<br />
}</p>
<p>}elseif(strtolower($key)== 'orders'){<br />
//处理order by<br />
foreach( $val as $k=&gt;$v){<br />
$orders[] = $k.' '.$v;<br />
}</p>
<p>}else{<br />
if(is_array($val)){<br />
$val = implode(',',$val);<br />
$and .= " and `$key` in ($val)";<br />
}else{<br />
$and .= " and `$key`='{$val}'";<br />
}<br />
}<br />
}<br />
if($and!='1' &amp;&amp; $or!='0')$where = $and.' or '.$or;<br />
elseif($and!='1') $where = $and;<br />
elseif($or!='0') $where = $or;<br />
if($groups)$where .= " group by ".implode(',',$groups);<br />
if($orders)$where .= " order by ".implode(',',$orders);<br />
$where = str_replace('1 and','',str_replace('0 or','',$where));</p>
<p>return $where;<br />
}<br />
/**<br />
* 锁表方法<br />
* 输入表名，锁定类型，r or w 写锁要放在读锁前面<br />
* 返回bool<br />
*/<br />
function lock($table,$type='r') {</p>
<p>if($type=='r'){<br />
$type = 'READ';<br />
}<br />
else{<br />
$type = 'WRITE';<br />
}<br />
$sql = "lock table `".DB_PREFIX.$table."` $type";<br />
return $this-&gt;query($sql);<br />
}<br />
/**<br />
* 解锁表方法<br />
*<br />
* 返回bool<br />
*/<br />
function unlock( ) {</p>
<p>$sql = "unlock tables";<br />
return $this-&gt;query($sql);<br />
}<br />
/**<br />
* 结果集放入数组方法<br />
* 返回数组，指针下移<br />
*/</p>
<p>function fetch($row) {</p>
<p>return mysql_fetch_array($row,MYSQL_ASSOC);</p>
<p>}</p>
<p>/**<br />
* 计算结果集行数方法<br />
* 输入$row<br />
* 返回行数<br />
*/</p>
<p>function num_rows($row) {</p>
<p>return  mysql_num_rows($row);</p>
<p>}</p>
<p>/**<br />
* 计算结果集列数方法<br />
* 输入$row<br />
* 返回列数<br />
*/</p>
<p>function num_fields($row) {</p>
<p>return mysql_num_fields($row);</p>
<p>}</p>
<p>/**<br />
* 释放result结果集内存<br />
* 返回布尔值<br />
*/</p>
<p>function free_result($row) {</p>
<p>return  mysql_free_result($row);</p>
<p>}</p>
<p>/**<br />
* 查看指定表的字段名<br />
* 输入表名<br />
* 返回全部字段名数组<br />
*/<br />
function list_fields($table) {<br />
$fields = mysql_list_fields(DB_NAME, DB_PREFIX.$table, $this-&gt;links);<br />
$columns = mysql_num_fields($fields);</p>
<p>for ($i = 0; $i &lt; $columns; $i++) {<br />
$row[$i] = mysql_field_name($fields, $i);<br />
}<br />
return $row;</p>
<p>}</p>
<p>/**<br />
* 查看数据库版本方法<br />
*/</p>
<p>function version() {<br />
return  mysql_get_server_info();</p>
<p>}</p>
<p>/**<br />
* 插入时查看插入ID<br />
*/</p>
<p>function insert_id() {<br />
return  mysql_insert_id();</p>
<p>}<br />
/**<br />
* 分页方法<br />
*/</p>
<p>function page($table,$condition='1',$pagesize=20,$id='page') {<br />
$page = $_GET[$id];<br />
if(!$page)$page= 0 ;<br />
elseif(!is_numeric($page))die('分页出错');</p>
<p>//查找结果集<br />
$p = $page * $pagesize;<br />
$limit = $p.",".$pagesize;<br />
$results = $this-&gt;readall($table,$condition,$limit);</p>
<p>//取得结果集行数<br />
$num = $this-&gt;count($table,$condition);<br />
//定义最后页 $maxpage<br />
if ($num % $pagesize) {<br />
$maxpage = (int) ($num / $pagesize +1);<br />
} else<br />
$maxpage = $num / $pagesize;<br />
if(STATICS){<br />
//从服务器端取得url信息</p>
<p>if($_GET[$id] === null){<br />
$_SERVER["REQUEST_URI"] = str_replace('index.php','',$_SERVER["REQUEST_URI"]);<br />
$_SESSION[$id] = str_replace('.html','',$_SERVER["REQUEST_URI"],$count);<br />
$_SESSION[$id] = $count?$_SESSION[$id] :$_SESSION[$id].'index';<br />
if(!sizeof($_GET))$_SESSION[$id].="-htm";<br />
}<br />
$str = "&lt;div class=pg style=padding-top:25px;&gt;&lt;a href=$_SESSION[$id]-".$id."-0.html&gt;First&lt;/a&gt; ";<br />
if($page)$str .= "&lt;a href=$_SESSION[$id]-".$id."-".($page-1).".html&gt;Previous&lt;/a&gt; ";<br />
if($page-3&gt;=0)$str .="&lt;a href=$_SESSION[$id]-".$id."-".($page-3).".html&gt;".($page-2)."&lt;/a&gt; ";<br />
if($page-2&gt;=0)$str .="&lt;a href=$_SESSION[$id]-".$id."-".($page-2).".html&gt;".($page-1)."&lt;/a&gt; ";<br />
if($page-1&gt;=0)$str .="&lt;a href=$_SESSION[$id]-".$id."-".($page-1).".html&gt;".$page."&lt;/a&gt; ";<br />
if($page &lt; $maxpage)$str .=($page+1)." ";<br />
if($page+1 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]-".$id."-".($page+1).".html&gt;".($page+2)."&lt;/a&gt; ";<br />
if($page+2 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]-".$id."-".($page+2).".html&gt;".($page+3)."&lt;/a&gt; ";<br />
if($page+3 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]-".$id."-".($page+3).".html&gt;".($page+4)."&lt;/a&gt; ";<br />
if($page+1 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]-".$id."-".($page+1).".html&gt;Next&lt;/a&gt; ";<br />
if(!$maxpage)$maxpage=1;<br />
$str .="&lt;a href=$_SESSION[$id]-".$id."-".($maxpage-1).".html&gt;Last&lt;/a&gt; &lt;a href=javascript:;&gt; ".($page+1)."/".$maxpage."Total&lt;/a&gt; &lt;/div&gt;";<br />
}<br />
else{<br />
//从服务器端取得url信息</p>
<p>if($_GET[$id] === null){<br />
$_SESSION[$id] = $_SERVER["REQUEST_URI"];<br />
if(!sizeof($_GET))$_SESSION[$id].="?p=1";</p>
<p>}</p>
<p>$str = "&lt;div class=pg style=padding-top:25px;&gt;&lt;a href=$_SESSION[$id]&amp;".$id."=0&gt;First&lt;/a&gt; ";<br />
if($page)$str .= "&lt;a href=$_SESSION[$id]&amp;".$id."=".($page-1)."&gt;Previous&lt;/a&gt; ";<br />
if($page-3&gt;=0)$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($page-3)."&gt;".($page-2)."&lt;/a&gt; ";<br />
if($page-2&gt;=0)$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($page-2)."&gt;".($page-1)."&lt;/a&gt; ";<br />
if($page-1&gt;=0)$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($page-1)."&gt;".$page."&lt;/a&gt; ";<br />
if($page &lt; $maxpage)$str .=($page+1)." ";<br />
if($page+1 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($page+1)."&gt;".($page+2)."&lt;/a&gt; ";<br />
if($page+2 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($page+2)."&gt;".($page+3)."&lt;/a&gt; ";<br />
if($page+3 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($page+3)."&gt;".($page+4)."&lt;/a&gt; ";<br />
if($page+1 &lt; $maxpage)$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($page+1)."&gt;Next&lt;/a&gt; ";<br />
if(!$maxpage)$maxpage=1;<br />
$str .="&lt;a href=$_SESSION[$id]&amp;".$id."=".($maxpage-1)."&gt;Last&lt;/a&gt; &lt;a href=javascript:;&gt; ".($page+1)."/".$maxpage."Total&lt;/a&gt; &lt;/div&gt;";<br />
}<br />
return array($results,$str);<br />
}</p>
<p>/**<br />
* 左连接多表查询<br />
* @param<br />
* @return<br />
**/<br />
function leftjoin($left,$right,$on,$condition,$limit=1){<br />
$left = explode('.',$left);<br />
$right = explode('.',$right);<br />
$left['0'] = "`".DB_PREFIX.$left['0']."`";<br />
$right['0'] = "`".DB_PREFIX.$right['0']."`";<br />
if($left['1'] || $right['1']){<br />
$fields = '';<br />
if(!empty($left['1'])){<br />
$_field = explode(',',$left['1']);<br />
foreach( $_field as $one){<br />
$fields.=$left['0'].'.`'.$one."`,";<br />
}<br />
}<br />
if(!empty($right['1'])){<br />
$_field = explode(',',$right['1']);<br />
foreach( $_field as $one){<br />
$fields.=$right['0'].".`".$one."`,";<br />
}<br />
}<br />
$fields = rtrim($fields,',');<br />
}<br />
else{<br />
$fields = '*';<br />
}<br />
$on = str_replace('\2',$right[0],str_replace('\1',$left[0],$on));<br />
$condition = str_replace('\2',$right[0],str_replace('\1',$left[0],$condition));<br />
$sql = "SELECT {$fields} FROM {$left[0]} LEFT JOIN {$right[0]}  ON ( {$on} ) WHERE ( {$condition} ) LIMIT {$limit} ";</p>
<p>$query = $this-&gt;query($sql);<br />
$field_num = mysql_num_fields($query);<br />
while($arr = mysql_fetch_array($query,MYSQL_NUM)){<br />
$_arr = array();<br />
for( $i=0 ; $i&lt;$field_num ; $i++ ){<br />
$table = str_replace(DB_PREFIX,'',mysql_field_table($query, $i));<br />
$field = mysql_field_name($query, $i);<br />
$_arr[$table.'.'.$field] = $arr[$i];<br />
}<br />
$array[]=$_arr;</p>
<p>}<br />
$array=$limit==1?$arrat[0]:$array;<br />
return $array;<br />
}<br />
/**<br />
* 用于创建一个表结构<br />
* @param 表名，结构 array(字段，格式，注释) 表注释 索引array(字段，字段) 全文搜索(字段，字段)<br />
* @return 打印<br />
**/</p>
<p>function createTable($tablename,$data,$comment='',$key='',$fulltext=''){<br />
$_key='';<br />
$_type = '';<br />
$_fulltext = '';<br />
$tablename = DB_PREFIX.$tablename;<br />
$sql = "CREATE TABLE IF NOT EXISTS `$tablename` (<br />
`id` int(10) unsigned NOT NULL auto_increment COMMENT 'ID',<br />
";<br />
foreach( $data as $one){<br />
switch($one[1]){<br />
case '':<br />
$_type = 'varchar(255)';<br />
break;<br />
case 'tinyint':<br />
$_type = 'tinyint(1)';<br />
break;<br />
case 'time':<br />
$_type = 'int(10)';<br />
break;<br />
default:</p>
<p>if(strpos($one[1],'.')!==false){<br />
$_type = explode('.',$one[1]);<br />
$_type = $_type[0].'('.$_type[1].')';<br />
}<br />
else{<br />
$_type = $one[1];<br />
}<br />
break;<br />
}<br />
$sql.="`{$one[0]}` $_type NOT NULL COMMENT '{$one[2]}',<br />
";<br />
}</p>
<p>if(!empty($key)){<br />
foreach( $key as $one){<br />
$_key.="KEY `$one` (`$one`),<br />
";<br />
}<br />
}<br />
if(!empty($fulltext)){<br />
foreach( $fulltext as $one){<br />
$_key.="FULLTEXT `$one` (`$one`),<br />
";<br />
}<br />
}</p>
<p>$sql.= $_key.$_fulltext."PRIMARY KEY  (`id`)<br />
) ENGINE=MyISAM DEFAULT CHARSET=".CHARSET." COMMENT '$comment';<br />
";<br />
if(!$_GET[sure]){</p>
<p>if(empty($_GET)){<br />
$url = '?sure=1';</p>
<p>}<br />
else{<br />
$url = $_SERVER["REQUEST_URI"].'&amp;sure=1';<br />
}</p>
<p>echo "即将执行以下建表操作：&lt;br&gt;&lt;pre&gt;$sql&lt;a href=$url&gt;确定&lt;/a&gt;&lt;/pre&gt;";<br />
}<br />
elseif($_GET[sure] &amp;&amp; $this-&gt;query($sql)){</p>
<p>echo "完成操作";<br />
}<br />
else{<br />
echo "操作失败：&lt;br&gt;&gt;&lt;pre&gt;$sql&lt;/pre&gt;";<br />
}</p>
<p>exit;</p>
<p>}<br />
};</p>
<p>//实例</p>
<p>define("DB_HOST", 'localhost');<br />
define("DB_USER", 'root');<br />
define("DB_PWD", '');<br />
define("DB_NAME", "test");<br />
define("DB_PREFIX", "test_");<br />
define('CHARSET', 'gbk'); // 编码<br />
define("GEBUG", 1);</p>
<p>//建表<br />
$Db=new Db();<br />
$data[] = array('title','','标题');<br />
$data[] = array('open','tinyint.1','是否公开');<br />
$data[] = array('keyword','','关键词');<br />
$data[] = array('content','text','内容');<br />
$data[] = array('created','time','时间');<br />
//$Db-&gt;createTable('article',$data,'文章表');<br />
//增删改查<br />
$data['title']='t';<br />
$data['keyword']='k';<br />
$Db-&gt;insert('article',$data);<br />
$num = $Db-&gt;read('article.id','1 order by id desc');<br />
$data['created'] = mktime()+$num['id'];<br />
$Db-&gt;update('article',$data,"`id` =2");<br />
$Db-&gt;delete('article',"`id` =3");</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-368.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>php采集程序，提取网页超链接，邮箱或其他特定内容</title>
		<link>http://www.zui88.com/blog/view-366.html</link>
		<comments>http://www.zui88.com/blog/view-366.html#comments</comments>
		<pubDate>Wed, 30 May 2012 08:48:29 +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=366</guid>
		<description><![CDATA[以下代码从上一篇文章修改而来，专门用于提取网页所有超链接，邮箱或其他特定内容 &#60;?php function fetch_urlpage_contents($url){ $c=file_get_contents($url); return $c; } //获取匹配内容 function fetch_match_contents($begin,$end,$c) { $begin=change_match_string($begin); $end=change_match_string($end); $p = "#{$begin}(.*){$end}#iU";//i表示忽略大小写，U禁止贪婪匹配 if(preg_match_all($p,$c,$rs)) { return $rs;} else { return "";} }//转义正则表达式字符串 function change_match_string($str){ //注意，以下只是简单转义 $old=array("/","$",'?'); $new=array("\/","\$",'\?'); $str=str_replace($old,$new,$str); return $str; } //采集网页 function pick($url,$ft,$th) { $c=fetch_urlpage_contents($url); foreach($ft as $key =&#62; $value) { $rs[$key]=fetch_match_contents($value["begin"],$value["end"],$c); if(is_array($th[$key])) { foreach($th[$key] as $old =&#62; $new) { [...]]]></description>
			<content:encoded><![CDATA[<p>以下代码从上一篇文章修改而来，专门用于提取网页所有超链接，邮箱或其他特定内容</p>
<p>&lt;?php</p>
<p>function fetch_urlpage_contents($url){<br />
$c=file_get_contents($url);<br />
return $c;<br />
}<br />
//获取匹配内容<br />
function fetch_match_contents($begin,$end,$c)<br />
{<br />
$begin=change_match_string($begin);<br />
$end=change_match_string($end);<br />
$p = "#{$begin}(.*){$end}#iU";//i表示忽略大小写，U禁止贪婪匹配<br />
if(preg_match_all($p,$c,$rs))<br />
{<br />
return $rs;}<br />
else { return "";}<br />
}//转义正则表达式字符串<br />
function change_match_string($str){<br />
//注意，以下只是简单转义<br />
$old=array("/","$",'?');<br />
$new=array("\/","\$",'\?');<br />
$str=str_replace($old,$new,$str);<br />
return $str;<br />
}</p>
<p>//采集网页<br />
function pick($url,$ft,$th)<br />
{<br />
$c=fetch_urlpage_contents($url);<br />
foreach($ft as $key =&gt; $value)<br />
{<br />
$rs[$key]=fetch_match_contents($value["begin"],$value["end"],$c);<br />
if(is_array($th[$key]))<br />
{ foreach($th[$key] as $old =&gt; $new)<br />
{<br />
$rs[$key]=str_replace($old,$new,$rs[$key]);<br />
}<br />
}<br />
}<br />
return $rs;<br />
}</p>
<p>$url="http://www.zui88.com"; //要采集的地址<br />
$ft["a"]["begin"]='&lt;a'; //截取的开始点&lt;br /&gt;<br />
$ft["a"]["end"]='&gt;'; //截取的结束点</p>
<p>$rs=pick($url,$ft,$th); //开始采集</p>
<p>print_r($rs["a"]);</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zui88.com/blog/view-366.html/feed</wfw:commentRss>
		<slash:comments>190</slash:comments>
		</item>
	</channel>
</rss>
