我想到的是array( hh=> 'h') 前边的hh不加引号是不是可行,以前没有注意。回头还得看看manual。不过我想既然是字符串引起来还是比较好些。
呵呵!

解决方案 »

  1.   

    在呢就是 while(ereg('\$daytype' , $text, $regs))中 
    $daytype前的$要不要转义,现在没法测试,只能提出疑惑。
      

  2.   

    第一个找到答案了:
    为什么 $foo[bar] 错了?
    应该始终在数组的索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]。但是为什么 $foo[bar] 错了呢?你可能在老的脚本中见过如下语法: 
    $foo[bar] = 'enemy';
    echo $foo[bar];
    // etc
     
    这样是错的,但可以起作用。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而 PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它可以起作用,因为未定义常量会被转换为同样名字的字符串。 和在语法一节中规定的一样,在方括号(“[”和“]”)之间必须有一个表达式。这意味着你可以这样写: 
    echo $arr[ foo(true) ];
     
    这是一个用函数返回值作为数组索引的例子。PHP 也可以用已知常量,你可能之前已经见过 E_*。 $error_descriptions[E_ERROR] = "A fatal error has occured";
    $error_descriptions[E_WARNING] = "PHP issued a warning";
    $error_descriptions[E_NOTICE] = "This is just an informal notice";
     
    注意 E_ERROR 也是个合法的标识符,就和第一个例子中的 bar 一样。但是上一个例子实际上和如下写法是一样的: $error_descriptions[1] = "A fatal error has occured";
    $error_descriptions[2] = "PHP issued a warning";
    $error_descriptions[8] = "This is just an informal notice";
     
    因为 E_ERROR 等于 1,等等。 那么 $foo[bar] 怎么可能起作用的呢?它起作用是因为根据语法的预期,bar 被当成了一个常量表达式。然而,在这个例子中不存在名为 bar 的常量。PHP 就假定你指的是字面上的 bar,也就是字符串 "bar",但你忘记写引号了。 那么为什么这样做不好?
    在未来的某一时刻,PHP 开发小组可能会想新增一个常量或者关键字,那你就有麻烦了。例如你已经不能这样用 empty 和 default 这两个词了,因为他们是保留字。 注: 当你把 error_reporting 设为 E_ALL 时,你将会看到无论何时使用了未定义的 index 时,PHP 都会产生通知(在你的脚本中加入一行 error_reporting(E_ALL);)。 注: 在双引号 string 中,另一种语法是合法的。细节见字符串中的变量解析。 
      

  3.   

    关于正则表达式 到
    http://www.hooday.com/ 学