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

标签 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>");
    }

那么有人可以指导我吗?我需要先创建类吗?我会等待 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/

相关文章:

php - 当我们从移动.htaccess 访问时如何更改根路径?

php - 通过 php 进行输入时 mysql 数据库出现问题

javascript - 使用 JQuery 单击下拉菜单向下滑动

php - 在 javascript 中设置 cookie 值并用 php 显示它

html - Bootstrap 1 额外 px in chrome

javascript - Leaflet:是否有像 panTo 或 setView 这样的方法在缩小或放大时不居中

javascript - 示例 Casper JS 脚本不起作用

php - 在 PHP 中隐藏/显示列表

javascript - Firebase 云函数中的 Object.values()

javascript - 使用 javascript api 显示来自 facebook 的照片?