上次我向 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>");
}
那么有人可以指导我吗?我需要先创建类吗?我会等待 friend 们的回复。
最佳答案
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 代码,请使用 img.outerHTML
。在 the fiddle 上进行测试.
注意:print
相当于浏览器中的 Ctrl+P :-),它与 PHP 中的 print 不同。
在PHP中,您可以使用DOM::createElement以及 DOM 中的其他方法,它们与 javascript 中的方法非常相似。就我个人而言,我更喜欢更简单的东西:
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>";
}
示例
echo tag("p","class=foo id=bar1","hello");
echo tag("p",'class="foo" id="bar2"',"hey");
echo tag("p",array("class"=>"foo","id"=>"bar3"),"heya");
echo tag("img","src=https://kevcom.com/images/linux/linux.logo.2gp.jpg");
关于javascript - 如何在 PHP 中为 HTML 标签创建自定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22157511/