我是一个PHP新手。对不起,如果这是常见问题...
假设我有这个HTML表格:
<table width="100%" cellpadding="12" cellspacing="0" border="0">
<tr bgcolor="black">
<td align="left">
<img src="logo.gif" />
</td>
<td>
<h1>Hello</h1>
</td>
<td align="right">
<img src="logo.gif" />
</td>
</tr>
</table>
我想使用PHP函数生成代码,而不是转义为HTML(?> ... <?php
)或使用带有手动字符串构造的echo。我cooked up a library这样就可以生成上面的例子:
echo table(
array('width' => '100%', 'cellpadding' => '12', 'cellspacing' => '0', 'border' => '0'),
tr(
array('bgcolor' => 'black'),
td(
array('align' => 'left'),
img(array('src' => 'logo.gif'))),
td(array(), h1(array(), 'Hello')),
td(array('align' => 'right'), img(array('src' => 'logo.gif')))));
我的问题是,是否有一个流行的或常用的库可以做到这一点?
答案 0 :(得分:3)
您可以使用Codeigniter html tables和form helper,但这就是它。其余的由你决定。
答案 1 :(得分:2)
答案 2 :(得分:2)
虽然不是完全匹配,但Yii框架使用the CHtml class来帮助生成html。
答案 3 :(得分:2)
我没有找到图书馆,所以我继续更新自己的HTML tab library。
答案 4 :(得分:2)
请参见PHP HTML Creation Library的非OO答案:
使用example.php:
<?php
require ("html.php");
// crete a header
$head=head(title("This is an example"));
// and a body
$body=body(h(1,"This is a header 1").pre("With some preformatted text").hr());
// wrap it in html
echo html($head.$body);
?>
html.php:
<?php
/**
* HTML Abstraction
*/
// anchor
function a($href,$la,$indent=-1) {
return attrtag("a",attr("href",$href),$la,$indent,$indent);
}
// break
function br($indent=-1) {
return tag("br","",$indent,$indent);
}
// header
function h($h,$lh,$indent=-1) {
if ($indent<0)
$indent=$h+1;
return tag("h".$h,$lh,$indent,-1);
}
// horizontal ruler
function hr($indent=-1) {
return tag("hr","",$indent,$indent);
}
// image
function img($src,$alt,$width,$height,$indent=-1) {
return attrtag("img",attr("src",$src).attr("alt",$alt).attr("width",$width).attr("height",$height),"",$indent,$indent);
}
// pre formatted content
function pre($content,$indent=-1) {
return tag("pre",$content,$indent);
}
// table
function td($ltd,$indent=5) {
return tag("td",$ltd,$indent,$indent);
}
// table header
function th($lth,$indent=5) {
return tag("th",$lth,$indent,$indent);
}
// table row
function tr($ltr,$indent=4) {
return tag("tr",$ltr,$indent,$indent);
}
// table
function table($lt,$indent=3) {
return tag("table",$lt,$indent,$indent);
}
// title
function title($title,$indent=2) {
return tag("title",$title,$indent,-1);
}
// head
function head($head,$indent=1) {
return tag("head",$head,$indent,$indent);
}
// body
function body($body,$indent=1) {
return tag("body",$body,$indent,$indent);
}
// html
function html($html) {
return tag("html",$html,-1,0);
}
// indentation by the given count
function indentation($count) {
return str_repeat(" ",$count);
}
// adds a newline
function line($line) {
return $line."\n";
}
// an attribute with a given value
// or empty if value is not set
function attr($attr,$value) {
if (empty($value))
return "";
else
return " ".$attr."='".$value."'";
}
// attributed tag, possibly indented
function attrtag($tag,$attr,$ltagcontent,$openindent=-1,$closeindent=-1) {
$html="<".$tag.$attr;
if ($openindent>=0)
$html="\n".indentation($openindent).$html;
if (empty($ltagcontent)) {
$html.="/>";
if ($closeindent>=0)
$html.="\n".indentation($closeindent);
} else {
$html.=">".$ltagcontent;
if ($closeindent>=0) {
$html.="\n".indentation($closeindent);
}
$html.="</".$tag.">";
}
return $html;
}
// tag with possible indentation
function tag($tag,$ltagcontent,$openindent=-1,$closeindent=-1) {
return attrtag($tag,"",$ltagcontent,$openindent,$closeindent);
}
// indent the given lines
function indent($html,$indent) {
$result="";
$lines=explode("\n",$html);
foreach($lines as $line) {
$result.=indentation($indent).$line."\n";
}
return $result;
}
?>