準備
# aptitude install php4-domxml
PHPをソースから入れている場合
php.iniを編集extension_dir = "/usr/lib/php4/20020429"
sample
// 文章を生成する
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("html"); // ルートとなる要素生成 (<html>タグ)
$root->set_attribute('lang','ja'); // <html>タグに lang 属性を追加
$root = $doc->append_child($root);
// <head>タグ生成
$head = $doc->create_element("head");
$head = $root->append_child($head);
// <title>タグ生成
$title = $doc->create_element("title");
$title = $head->append_child($title);
// <title>タグの中にテキスト挿入
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
// HTMLを出力
echo $doc->html_dump_mem();
output (インデント付与)
<html lang="ja">
<head>
<title>This is the title</title>
</head>
</html>
応用例
都道府県の一覧の<select>タグを出力function generateSelectHtml($items,$id,$default){
$doc = domxml_new_doc("1.0");
$root = $doc->create_element('select');
$root->set_attribute('name',$id);
$root->set_attribute('id',$id);
$root= $doc->append_child($root);
// 初期表示のテキストが設定されていたとき
if (!empty($default)){
$option = $doc->create_element('option');
$option->set_attribute('value','');
if(empty($_SESSION[$id])){
$option->set_attribute('selected','selected');
}
/* Add text node */
$text = $doc->create_text_node($default);
$option->append_child($text);
$root->append_child($option);
}
foreach($items as $i){
$option = $doc->create_element('option');
$option->set_attribute('value',$i);
if ($_SESSION[$id] == $i){
$option->set_attribute('selected','selected');
}
/* Add text node */
$text = $doc->create_text_node($i);
$option->append_child($text);
$root->append_child($option);
}
return $doc->html_dump_mem();
}
function generatePrefSelectHtml(){
$default = '都道府県を選択してください。';
$items = array(
'北海道',
'青森県',
'岩手県',
'宮城県',
'秋田県',
'山形県',
'福島県',
'茨城県',
'栃木県',
'群馬県',
'埼玉県',
'千葉県',
'東京都',
'神奈川県',
'新潟県',
'富山県',
'石川県',
'福井県',
'山梨県',
'長野県',
'岐阜県',
'静岡県',
'愛知県',
'三重県',
'滋賀県',
'京都府',
'大阪府',
'兵庫県',
'奈良県',
'和歌山県',
'鳥取県',
'島根県',
'岡山県',
'広島県',
'山口県',
'徳島県',
'香川県',
'愛媛県',
'高知県',
'福岡県',
'佐賀県',
'長崎県',
'熊本県',
'大分県',
'宮崎県',
'鹿児島県',
'沖縄県',
);
return generateSelectHtml($items,'pref',$default);
}
usage
<?php echo generatePrefSelectHtml() ?>
Reference
PHP: DomDocument->html_dump_mem - Manualhttp://jp.php.net/manual/ja/function.domdocument-html-dump-mem.php