나는 일종의 템플릿 시스템을 만들고 있습니다. 내가 바꾸고 싶다"string"! = "string"
<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
을 비교하기 위해 노력했습니다. MD5는 다릅니다. strcmp
은 -1, "=="및 "==="는 false를 반환합니다. 뭐가 잘못 되었 니? ($what
유형은 문자열입니다 나중에 내가 여러 인수를 사용할 것이기 때문에 당신은 call_user_func
에 call_user_func_array
을 변경할 수 없습니다.)
편집 :
STRLEN은 무엇 $ - (403) 나 strlen 제목 - 5 가 훗 - 보이는
위해서 var_dump
문자열 (403) " 제목"
실제로 이것은 보안 허점이있는 소프트웨어 작성 방법입니다. – Ingo