在php数组上传递类似选项的包装器

时间:2014-09-27 12:21:58

标签: php wrapper

我在这里要做的是我正在建立php应用程序,但我希望有选择。

示例:

   $options= array(
    'elementWrapper'=>'<div class="wrapper"></div>'
    );

    And passing it like :

    $myapp->options($options);

如何将此字符串elementWrapper拆分为2个变量:|

$elementWrapperStart - (<div class="wrapper">) and $elementWrapperEnd - (</div>);

或者在某些情况下这可能不是div来自动处理这个并将元素包装在这个传递的元素中。

任何帮助将不胜感激。 感谢

3 个答案:

答案 0 :(得分:1)

另一个阵列......

$options= array(
    'elementWrapper' => array(
        'start'=> '<div class="wrapper">', 
        'end'  => '</div>'
     )
);

可访问$options['elementWrapper']['start']$options['elementWrapper']['end']

$elementWrapperStart = $options['elementWrapper']['start'];
$elementWrapperEnd   = $options['elementWrapper']['end'];

答案 1 :(得分:0)

正如@bwoebi已经指出你最有可能使用DOMDocument,因为在解析HTML字符串时使用split或正则表达式非常容易出错。

// I´m just assuming your class looks something like this:
class MyApp {

    private $options;

    public function options($options) {

        if (isset($options['elementWrapper'])) {
            $dom = new DomDocument;
            $dom->loadHtml($options['elementWrapper']);
            $options['elementWrapper'] = $dom->documentElement;
        }   
        $this->options = $options;
    }
}

答案 2 :(得分:-1)

为什么不传递一个两元素数组:


$myapp->options(array(
  array(
     'start' => '<div class="wrapper">',
     'end'   => '</div>'
  )
));