php 获取变量的变量名

<?php
/* 取得变量的名字 */
function getVarName(&$src)
{
 //存储当前变量值
 $save = $src;
 //存储所有变量值
 $allvar = $GLOBALS;
 //在函数中不要直拉遍历$GLOBALS,会出现堆栈问题
 foreach($allvar  as $k=>$v)
 {
  //变量值相同,可能不是相同变量,因多个变量的值可能相同
  if ($src == $v)
    {
   //改变当前变量$src的值
   $src = 'change';
   //如果$GLOBALS[$k]也跟着改变,那就是同一个变量。
   if ($src == $GLOBALS[$k]) 
   {
    echo "/$$k name is $k<br/>";
   }
    } 
 }
 //还原变量值
 $src = $save;
}
$test  = "helo";
$test2 = "helo";
getVarName($test);
?>

缺点是只能获取当前页面的

Advertisements

zen cart 数据库缓存简介

首先,zencart的缓存指的是SQL数据库缓存,就是zencart读取数据库时,可以保存部分查询结果,一定程度上减少对数据库的查询次数。

zencart的SQL缓存设置有三个选项:
none, database
file
前台的数据库缓存,在
includesconfigure.php 文件中设置;
后台的数据库缓存,在 adminincludesconfigure.php
文件中设置;
需要修改以下两个参数:

  define('SQL_CACHE_METHOD', 'none'); 
  define('DIR_FS_SQL_CACHE', '/var/www/html/cache');

 

其中,SQL_CACHE_METHOD 即为缓存方式:

none:
无,即不使用缓存。如果您的商品和分类很少,该方式实际上速度最快。
database:
数据库,即使用数据库缓存方式。SQL查询结果缓存在数据库表中。听起来很奇怪,但对于商品和分类数量中等的网站来说,可以加快速度。
file:
文件,即使用文件缓存方式。SQL查询结果缓存于服务器的硬盘上。该方式适合有大量的商品和分类的网站。
如果选择 file 方式,需要同时设置
DIR_FS_SQL_CACHE 为缓存文件的目录,这也是商店管理员需要定时删除缓存文件的目录。建议使用zencart的cache目录,该目录必须可写
(chmod 666 或者 chmod 777)。

 

php 字符串截取 标题超过部分用”…”代替


function
sub_title($t){ $len = 50; $text = $t; return strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."..."); }

chr(0)不是null
null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。
当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空”
根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了
注:
编码 第一字节 第二字节
gb2312 0xa1-0xf7 0xa1-0xfe
gbk 0x81-0xfe 0x81-0xfe 0x40-0x7e
big5 0xa1-0xf7 0x81-0xfe 0x40-0x7e
支持utf-8编码,原作者不详:

     function subString_UTF8($str, $start, $lenth)
    {
        $len = strlen($str);
        $r = array();
        $n = 0;
        $m = 0;
        for($i = 0; $i < $len; $i++) {
            $x = substr($str, $i, 1);
            $a  = base_convert(ord($x), 10, 2);
            $a = substr('00000000'.$a, -8);
            if ($n < $start){
                if (substr($a, 0, 1) == 0) {
                }elseif (substr($a, 0, 3) == 110) {
                    $i += 1;
                }elseif (substr($a, 0, 4) == 1110) {
                    $i += 2;
                }
                $n++;
            }else{
                if (substr($a, 0, 1) == 0) {
                    $r[ ] = substr($str, $i, 1);
                }elseif (substr($a, 0, 3) == 110) {
                    $r[ ] = substr($str, $i, 2);
                    $i += 1;
                }elseif (substr($a, 0, 4) == 1110) {
                    $r[ ] = substr($str, $i, 3);
                    $i += 2;
                }else{
                    $r[ ] = '';
                }
                if (++$m >= $lenth){
                    break;
                }
            }
        }
        return $r;
    } // End subString_UTF8;
}// End String

#由于此函数返回的是一个数组,因此要配合join函数来显示字符串:
#
join(”,subString_UTF8($str, $start, $lenth));
#
在页面显示的时候还可以在此语句后面连一个”…”