如何在PHP中为HTML标记创建自定义函数?

时间:2014-03-03 21:10:42

标签: javascript php html function tags

上次我在PHP中寻求帮助时得到了很好的回复。感谢你们所有人。现在我正在使用MVC PHP学习和创建网站。我想问你,我可以创建一个自定义函数来使用html标签吗?我试图记住我在哪里看到它的一个例子。实际上我之前在开源项目中看过它。

就像这样:

htmltag(script(src=address, type=javascript))

它的输出是html,如:

<script src="address" type="javascript"></script>

我可以创建这样的东西吗?我想这样做:

public function script($var1, $var2){
    $var1 = array(
                'type'=>'',
                'charset' => '',
                'src' => ''
            );
    $var2 = false;
    print("<script $var1>$var2</script>");
    }

所以有人可以指导我吗?我需要先创建课程吗?我会等你的回复朋友。

1 个答案:

答案 0 :(得分:1)

Javascript 适用于DOM,see the reference

function htmltag(name,atts) {
    var tag = document.createElement(name);
    for(var i in atts) tag.setAttribute(i, atts[i]);
    return tag;
}

var img = htmltag("img", {
    src: "https://kevcom.com/images/linux/linux.logo.2gp.jpg",
    alt: "linux logo"
});

document.body.appendChild(img);

请注意,img这里是对象(XML节点),而不仅仅是纯文本,因此您可以在其上附加事件等。如果您只想从中提取纯HTML代码,请使用{{1} }。在the fiddle上进行测试。

注意:img.outerHTML相当于浏览器中的Ctrl + P :-)它不是PHP中的打印等效项。

PHP 中,您可以使用来自DOM的DOM::createElement和其他方法,这些方法与来自javascript的方法非常相似。 Personaly我更喜欢更简单的东西:

print

实施例

function tag($name,$atts="",$content="") {
    $str_atts = "";
    if(is_array($atts)) {
    foreach($atts as $key=>$val) if(!($val===null || $val===false)) $str_atts.= " $key=\"$val\"";
  } else $str_atts = " ".preg_replace("/=(?!\")(\S+)/m","=\"\\1\"",$atts);
    if($name=="img" && !strpos($str_atts,"alt=")) $str_atts.= " alt=\"\"";
    if(in_array($name,array("input","img","col","br","hr","meta"))) $name.= "/";
    if(substr($name,-1)=="/") { $name = substr($name,0,-1); return "<{$name}{$str_atts}/>"; }
    else return "<{$name}{$str_atts}>$content</$name>";
}