Ben kendi şablonları sisteminin bir çeşit yapıyorum. Ben değiştirmek istiyorum
<title>{site('title')}</title>
Parametresi "başlığı" ile işlevi "site" yürütme içine. İşte
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;
}
İşte site:
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;
}
}
Ben "başlığı" ile (bu durum için "title" olduğu) $what
karşılaştırmak için denedim. MD5 farklıdır. strcmp
== "", -1 verir ve "===" return false. Yanlış olan nedir? ($what
türü dizedir. Sonra ben birden fazla argüman kullanarak olacak çünkü, call_user_func_array
call_user_func
içine değiştiremezsiniz)
Edit:
Strlen $what - strlen title 403 - 5 Heh - looks like I haven't cut the rest ;)
var_dump
string(403) " title"