我正在做某種自己的模板系統。我想改變「string」!=「string」
<title>{site('title')}</title>
用函數「site」執行參數「title」。這裏的
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
(這是這種情況下, 「標題」)。 MD5是不同的。 strcmp
給出-1,「==」和「===」返回false。哪裏不對? ($what
類型爲字符串,你不能改變call_user_func_array
爲call_user_func
,因爲後來我將使用多個參數。)
編輯:
strlen的$什麼 - strlen的標題 403 - 5 嘿 - 看起來像我沒有削減休息;)
的var_dump
串(403) 「 標題」
順便說一句,這是一個如何寫軟件與安全漏洞。 – Ingo 2010-05-23 16:14:06