Я делаю какую-то собственную систему шаблонов. Я хочу изменить"string"! = "String"
<title>{site('title')}</title>
Выполнение функции «сайт» с параметром «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
, потому что потом я буду использовать несколько аргументов.)
Edit:
STRLEN $, что - StrLen название 403 - 5 Хех - выглядит Я не вырезано остальное;)
var_dump
строка (403) " название"
Кстати, это то, как один пишет программное обеспечение с дырами в безопасности. – Ingo