【问题标题】:How can I create a custom function in PHP for HTML tags?如何在 PHP 中为 HTML 标签创建自定义函数?
【发布时间】:2014-03-03 21:10:41
【问题描述】:

上次我在 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>");
    }

那么任何人都可以指导我吗?我需要先创建类吗?我会等待你的朋友们的回复。

【问题讨论】:

  • 您不能将数组转储到这样的字符串中。你最终会得到&lt;script Array&gt;&lt;/script&gt;
  • 所以有什么建议吗?我可以创造这样的东西吗?或者我应该使用 echo ?
  • 不要太苛刻,但您在非常基本的 PHP 方面表现出巨大的缺乏知识。对于这个问题,您可能会得到一个可行的答案,但是在您尝试推出自己的 MVC 应用程序之前,花(更多)时间学习 PHP 基础知识对您是最有益的。
  • 我知道这需要很多时间。因为我在自学。日复一日,创造新事物。
  • 感谢@phpisuber01。我看了看,看起来不错,对我很有帮助。

标签: javascript php html function tags


【解决方案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 代码,请使用 img.outerHTML。在the fiddle 上进行测试。

注意:print 相当于浏览器中的 Ctrl+P :-) 它不是 PHP 中的打印等价物。

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");

【讨论】:

  • 谢谢。但是如果可能的话,你能用 PHP 指导我吗?我也会用这个。 :D
  • 感谢@Jan Turoň。这很有帮助。 :D
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多