我正在做一些自己的模板系统。我想改变
<title>{site('title')}</title>使用参数"title“执行函数"site”。下面是
private function replaceFunc($subject)
{
foreach($this->func as $t)
{
$args = explode(", ", preg_replace('/\{'.$t.'\(\'([a-zA-Z,]+)\'\)\}/', '$1', $subject));
$subject = preg_replace('/\{'.$t.'\([a-zA-Z,\']+\)\}/', call_user_func_array($t, $args), $subject);
}
return $subject;
}这是一个网站:
function site($what)
{
global $db;
$s = $db->askSingle("SELECT * FROM ".DB_PREFIX."config");
switch($what)
{
case 'title':
return 'Title of page';
break;
case 'version':
return $s->version;
break;
case 'themeDir':
return 'lolmao';
break;
default:
return false;
}
}我试着将标题(在本例中是“$what”)与"title“进行比较。MD5是不同的。strcmp返回-1,"==“和"===”返回false。出什么问题了?($what类型是字符串。您不能将call_user_func_array更改为call_user_func,因为稍后我将使用多个参数)
编辑:
Strlen $what - strlen title 403 -5嘿-看起来我还没把剩下的部分删掉;)
var_dump
字符串(403)“标题”
发布于 2010-05-23 23:16:55
MD5是不同的。Strcmp返回-1,"==“和"===”返回false。
再加上var_dump()和strlen()
此函数适用于特别困难的情况:
function dump(&$str) {
$i=0;
while (isset($str[$i])) echo strtoupper(dechex(ord($str[$i++])));
}发布于 2010-05-23 23:17:26
你有没有试过修剪空格?
$what = trim($what)可能有一个尾随/开头的空格字符。还要确保它们的大小写相同:
$what = strtolower(trim($what)) //trim and lower发布于 2010-05-23 23:18:46
您确定没有空格吗?使用trim()来摆脱它们。如果md5s不同,则字符串也不同。var_dump(str_split($what))将逐个字符输出字符串,如果空格不是问题,这可能会有所帮助。
https://stackoverflow.com/questions/2892250
复制相似问题