Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP html和PHP呈现函数_Php_Html_Eval_Render - Fatal编程技术网

PHP html和PHP呈现函数

PHP html和PHP呈现函数,php,html,eval,render,Php,Html,Eval,Render,我有一个名为Tag的类,它必须用HTML脚本动态呈现PHP public function render () { $render = ''; $render .= '<' . $this->tagname; //attributes foreach ($this->attr as $attr) { if(isset($attr['name']) && isset($attr['value'])){ $render .=

我有一个名为Tag的类,它必须用HTML脚本动态呈现PHP

public function render () {
  $render = '';

  $render .= '<' . $this->tagname;

  //attributes
  foreach ($this->attr as $attr) {
    if(isset($attr['name']) && isset($attr['value'])){
      $render .= ' ' . $attr['name'] . '="' . $attr['value'] . '"';
    }
  }
  if($this->tagtype == 1) $render .= ' />';
  if($this->tagtype == 2) $render .= ' >';
  if($this->tagtype == 0) {
    $render .= '>';
    foreach ($this->content as $content) {
      if(isset($content['type']) && isset($content['data'])){
    //content as HTML
    switch ($content['type']) {
      case 'html':
        $render .= $content['data'];
      break;
      case 'tag':
        $tag = $content['data'];
        $render .= $tag->render();
      break;
      case 'script':
        $render .= file_get_contents($content['data']);
      break;
      default:  break;
    }
      }
    }
    $render .= '</' . $this->tagname . '>';
  }

  return $render;
}
然后,我只需要运行
$site->render()
就可以显示它

我曾考虑过使用
eval
,但由于它通常是不安全的,所以我认为有类似的解决方案


如果您想做这样的事情,您可以告诉我您将使用哪个方向吗?

您是否考虑过使用DOMDocument DOM操纵类来做这类事情?为什么要重新发明轮子?@MikeBrant谢谢你的回复,你说得对,我可以使用DOMDocument,但它只适用于HTML元素,我还需要导入PHP脚本。
$head->addTag(new Tag ('script',array('name' => 'src', 'data' => 'some_source')));
$body->addFile('nav.php');