Библиотека PHP для генерации HTML-тегов

Я PHP newb. Извините, если это FAQ …

Предположим, у меня есть эта таблица 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> 

Вместо того, чтобы ускользнуть от HTML ( ?> ... <?php ) или использовать эхо с ручной конструкцией строк, я хотел бы использовать функции PHP для генерации кода. Я приготовил библиотеку так, чтобы приведенный выше пример можно было сгенерировать с помощью этого:

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

Мой вопрос: есть ли уже популярная или широко используемая библиотека, которая делает это?

Вы можете использовать таблицы Codeigniter html и создать хелпер, но это все. Остальное зависит от тебя.

codeigniter делает такие вещи. я бы предложил вам изучить это.

Хотя это не точное соответствие, структура Yii использует класс CHtml, чтобы помочь в генерации html.

Я не нашел библиотеку, поэтому я продолжал обновлять собственную библиотеку вкладок HTML .

См. Не OO-ответ библиотеки PHP HTML Creation :

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; } ?>