我想知道是否有可能从Smarty中的字符串中提取属性。
样品:
{$mySmartyArray}
//This array contains
//Array( 0 => "<input name='aaa' />",
// 1 => "<input value='' name='bbb' placeholder='' />",
// 2 => "<input placeholder='foobar' name='ccc' />"
// );
我想要达到的目标是:
<select name="{$mySmartyArray[0]:attr[name]}">
当然,我知道这看起来很糟糕,但我正在寻找某种选择器。
或者我应该使用脏strpos
搜索来执行此操作?
或者是正则表达式的可能性吗?
任务是:
PHP调用一些函数并创建聪明的东西。现在我想用一些select-options替换数组中的输入。
我即将创建一个聪明的插件来执行以下操作:
<select name="{preg_match value=$mySmartyArray[0] pattern='myRegExHere'}">
<option>...</option>
</select>
这让我想到了下一个问题:选择这个的正则表达式是什么?
答案 0 :(得分:0)
我添加了一个插件来解决我的问题:
function smarty_function_preg_match($params, &$smarty)
{
if (!empty($params['pattern']) && !empty($params['subject'])) {
$subject = $params['subject'];
$pattern = "~{$params['pattern']}~";
preg_match($pattern, $subject, $match);
return $match[1];
}
}
现在使用
{preg_match pattern='name="(.*?)"' subject=$new_item_data.content}
在我的情况下,这将返回名称值:
<select name="{preg_match pattern='name="(.*?)"' subject=$new_item_data.content}">
<option>aaa</option>
<option>bbb</option>
</select>