从smarty中的字符串输入中提取名称

时间:2016-03-02 15:53:09

标签: html smarty

我想知道是否有可能从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>

这让我想到了下一个问题:选择这个的正则表达式是什么?

1 个答案:

答案 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>