gpt4 book ai didi

PHP Smarty - 获取模板中所有变量的列表?

转载 作者:行者123 更新时间:2023-12-03 12:12:05 25 4
gpt4 key购买 nike

我正在使用 Smarty 和 PHP。如果我有一个模板(作为文件或字符串),是否有一些方法可以让 smarty 解析该文件/字符串并返回一个包含该模板中所有 smarty 变量的数组?

例如:我想要这样的东西:

$mystring = "Hello {$name}. How are you on this fine {$dayofweek} morning";
$vars = $smarty->magically_parse( $string );
// $vars should now be array( "name", "dayofweek" );

我想这样做的原因是因为我希望用户能够自己输入模板,然后在以后填写。因此,我需要能够获取此模板中的变量列表。

假设我只做简单的变量(例如:没有“{$object.method}”或“{$varaible|function}”),并且我不包括任何其他模板。

最佳答案

如果您需要隐藏在诸如 {if $var%2} 之类的东西中的变量,我会使用这种代码:

preg_match_all('`{[^\\$]*\\$([a-zA-Z0-9]+)[^\\}]*}`', $string, $result);
$vars = $result[1];

如果你也想捕捉类似的东西:{if $var != $var2} 一个更好的版本如下

function getSmartyVars($string){
// regexp
$fullPattern = '`{[^\\$]*\\$([a-zA-Z0-9]+)[^\\}]*}`';
$separateVars = '`[^\\$]*\\$([a-zA-Z0-9]+)`';

$smartyVars = array();
// We start by extracting all the {} with var embedded
if(!preg_match_all($fullPattern, $string, $results)){
return $smartyVars;
}
// Then we extract all smarty variables
foreach($results[0] AS $result){
if(preg_match_all($separateVars, $result, $matches)){
$smartyVars = array_merge($smartyVars, $matches[1]);
}
}
return array_unique($smartyVars);
}

关于PHP Smarty - 获取模板中所有变量的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1629701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com