PHP使用DOMDocument类生成HTML实例(包含常见标签元素)


Posted in PHP onJune 25, 2014

在这一章节里, 我们来了解下如何利用核心(core) PHP 生成 HTML 文件
 
最近我在查询 php.net 的时候,发现 DOMDocument 这个类非常的有意思, 可以用来生成 XML 或 HTML 文件, DOMDocument 为我们提供了一系列的方法来生成 XML/HTML 标签并插入到 DOM 中, 现在就让我们来看下如何生成的
 
这里先来看下, 利用它所提供的方法生成的效果, 见下图:

PHP使用DOMDocument类生成HTML实例(包含常见标签元素)

一、创建新的 DOM 文件

//实例化 DOMDocument 类,并指定版本号

$dom = new DOMDocument('1.0');

 

//将生成的标签或代码输出到页面

echo $dom->saveHTML();

二、在 DOM 文件里添加新的 HTML 元素
$css_text = 'p{color:#ff00ff;}';

 

//创建新的 style 标签和 CSS 内容

$style = $dom->createElement('style', $css_text);

 

//添加该 style 标签到 DOM 文件中

$dom->appendChild($style);

 

//如下是输出效果

<style>

    p{color:#ff00ff;}

</style>

这里需要说下就是 createElement 方法, 当你想创建 <style> 标签并写入 Css, 可以利用该方法的第二个参数作为 Css 内容,如上所示。 但如果你想创建 <br> 标签, 第二个参数即可省略, 如下:
//创建新的 <br> 标签

$br = $dom->createElement('br');

 

//添加该 <br> 标签到 DOM 文件中

$dom->appendChild($br);

三、为 HTML 元素添加属性
 
HTML 元素拥有各种各样的属性, 为其添加属性可以用到 createAttribute() 方法
$css_text = 'p{color:#ff00ff;}';

 

//创建新的 style 标签和 CSS 内容

$style = $dom->createElement('style', $css_text);

 

//创建新的属性 'type'

$domAttribute = $dom->createAttribute('type');

 

//为属性 'type' 添加值

$domAttribute->value = 'text/css';

 

//添加该属性到 style 标签中

$style->appendChild($domAttribute);

 

//添加该 style 标签到 DOM 文件中

$dom->appendChild($style);

 

//如下是输出效果

<style type="text/css">

    p{color:#ff00ff;}

</style>

$p_text = 'This is a paragraph.';

 

//创建新的 p 标签和内容

$p = $dom->createElement('p', $p_text);

 

//创建新的属性 'id'

$domAttribute = $dom->createAttribute('id');

 

//为属性 'id' 添加值

$domAttribute->value = 'description';

 

//添加该属性到 p 标签中

$p->appendChild($domAttribute);

 

//添加该 p 标签到 DOM 文件中

$dom->appendChild($p);

 

//如下是输出效果

<p id="description">

    某一天

</p>

四、添加 Form 元素
 
添加 textbox
$input = $dom->createElement('input');

 

$domAttribute = $dom->createAttribute('type');

$domAttribute->value = 'text';

$input->appendChild($domAttribute);

 

$domAttribute = $dom->createAttribute('name');

$domAttribute->value = 'e-mail';

$input->appendChild($domAttribute);

 

$dom->appendChild($input);

 

//如下是输出效果

<input type="text" name="e-mail">

五、创建 Table
$table = $dom->createElement('table');

 

$domAttribute = $dom->createAttribute('id');

$domAttribute->value = 'my_table';

 

$tr = $dom->createElement('tr');

$table->appendChild($tr);

 

$td = $dom->createElement('td', 'Label');

$tr->appendChild($td);

 

$td = $dom->createElement('td', 'Value');

$tr->appendChild($td);

 

$table->appendChild($domAttribute);

 

$dom->appendChild($table);

 

//如下是输出效果

<table id="my_table">

    <tbody>

        <tr>

            <td>Label</td>

            <td>Value</td>

        </tr>

    </tbody>

</table>

最后我们来一个完整复杂一点的例子:
$dom = new DOMDocument('1.0');

 

//CSS 内容 

$css_text = '';

$css_text .= 'body{width:285px;margin:auto;margin-top:50px;}';

$css_text .= '#my_table{border:1px solid #ececec;}';

$css_text .= '#my_table th{border:1px solid #ececec;padding:5px;text-decoration:underline;}';

$css_text .= '#my_table td{border:1px solid #ececec;padding:5px;}';

$css_text .= '#my_table td:first-child{text-align:right;color:#333333;font-weight:bold;color:#999999;}';

 

//创建新的 style 标签和 CSS 内容

$style = $dom->createElement('style', $css_text);

 

//创建新的属性 'type'

$domAttribute = $dom->createAttribute('type');

 

//为属性 'type' 添加值

$domAttribute->value = 'text/css';

 

//添加该属性到 style 标签中

$style->appendChild($domAttribute);

 

//添加该 style 标签到 DOM 文件中

$dom->appendChild($style);

 

//添加 form

$form = $dom->createElement('form');

$dom->appendChild($form);

$formAttribute = $dom->createAttribute('method');

$formAttribute->value = 'post';

$form->appendChild($formAttribute);

 

//添加 table

$table = $dom->createElement('table');

$tableAttribute = $dom->createAttribute('id');

$tableAttribute->value = 'my_table';

$table->appendChild($tableAttribute);

 

//添加新的行(row)

$tr = $dom->createElement('tr');

$table->appendChild($tr);

 

//添加新的列(column)

$th = $dom->createElement('th', 'Generate HTML using PHP');

$tr->appendChild($th);

$thAttribute = $dom->createAttribute('colspan');

$thAttribute->value = '2';

$th->appendChild($thAttribute);

 

//添加新的行(row)

$tr = $dom->createElement('tr');

$table->appendChild($tr);

 

//添加新的列(column)

$td = $dom->createElement('td', 'First Name');

$tr->appendChild($td);

 

//添加新的列(column)

$td = $dom->createElement('td');

$tr->appendChild($td);

 

//添加 input 元素到列(column)中

$input = $dom->createElement('input');

$td->appendChild($input);

$tdAttribute = $dom->createAttribute('type');

$tdAttribute->value = 'text';

$input->appendChild($tdAttribute);

$tdAttribute = $dom->createAttribute('name');

$tdAttribute->value = 'f_name';

$input->appendChild($tdAttribute);

 

//添加新的行(row)

$tr = $dom->createElement('tr');

$table->appendChild($tr);

 

//添加新的列(column)

$td = $dom->createElement('td', 'Email');

$tr->appendChild($td);

 

//添加新的列(column)

$td = $dom->createElement('td');

$tr->appendChild($td);

 

//添加 input 元素到列(column)中

$input = $dom->createElement('input');

$td->appendChild($input);

$tdAttribute = $dom->createAttribute('type');

$tdAttribute->value = 'text';

$input->appendChild($tdAttribute);

$tdAttribute = $dom->createAttribute('name');

$tdAttribute->value = 'e-mail';

$input->appendChild($tdAttribute);

 

//添加新的行(row)

$tr = $dom->createElement('tr');

$table->appendChild($tr);

 

//添加新的列(column)

$td = $dom->createElement('td', 'Gender');

$tr->appendChild($td);

 

//添加新的列(column)

$td = $dom->createElement('td');

$tr->appendChild($td);

 

//添加 input 元素到列(column)中

$select = $dom->createElement('select');

$td->appendChild($select);

$tdAttribute = $dom->createAttribute('name');

$tdAttribute->value = 'gender';

$select->appendChild($tdAttribute);

 

//为 Select 下拉框添加选项

$opt = $dom->createElement('option', 'Male');

$domAttribute = $dom->createAttribute('value');

$domAttribute->value = 'male';

$opt->appendChild($domAttribute);

$select->appendChild($opt);

 

$opt = $dom->createElement('option', 'Female');

$domAttribute = $dom->createAttribute('value');

$domAttribute->value = 'female';

$opt->appendChild($domAttribute);

$select->appendChild($opt);

 

//添加新的行(row)

$tr = $dom->createElement('tr');

$table->appendChild($tr);

 

//添加新的列(column)

$td = $dom->createElement('td', 'Interest');

$tr->appendChild($td);

 

//添加新的列(column)

$td = $dom->createElement('td');

$tr->appendChild($td);

 

//添加 input 元素到列(column)中

$radio = $dom->createElement('input');

$td->appendChild($radio);

$radAttribute = $dom->createAttribute('type');

$radAttribute->value = 'radio';

$radio->appendChild($radAttribute);

$radAttribute = $dom->createAttribute('name');

$radAttribute->value = 'interest';

$radio->appendChild($radAttribute);

$radAttribute = $dom->createAttribute('id');

$radAttribute->value = 'php';

$radio->appendChild($radAttribute);

 

$label = $dom->createElement('label', 'PHP');

$labelAttribute = $dom->createAttribute('for');

$labelAttribute->value = 'php';

$label->appendChild($labelAttribute);

$td->appendChild($label);

 

$radio = $dom->createElement('input');

$td->appendChild($radio);

$radAttribute = $dom->createAttribute('type');

$radAttribute->value = 'radio';

$radio->appendChild($radAttribute);

$radAttribute = $dom->createAttribute('name');

$radAttribute->value = 'interest';

$radio->appendChild($radAttribute);

$radAttribute = $dom->createAttribute('id');

$radAttribute->value = 'jquery';

$radio->appendChild($radAttribute);

 

$label = $dom->createElement('label', 'jQuery');

$labelAttribute = $dom->createAttribute('for');

$labelAttribute->value = 'jquery';

$label->appendChild($labelAttribute);

$td->appendChild($label);

 

//添加新的行(row)

$tr = $dom->createElement('tr');

$table->appendChild($tr);

 

//添加新的列(column)

$td = $dom->createElement('td');

$tr->appendChild($td);

$tdAttribute = $dom->createAttribute('colspan');

$tdAttribute->value = '2';

$td->appendChild($tdAttribute);

 

//添加 input 元素到列(column)中

$input = $dom->createElement('input');

$td->appendChild($input);

$tdAttribute = $dom->createAttribute('type');

$tdAttribute->value = 'submit';

$input->appendChild($tdAttribute);

$tdAttribute = $dom->createAttribute('value');

$tdAttribute->value = 'Sign-Up';

$input->appendChild($tdAttribute);

 

//添加 table 到 form 中

$form->appendChild($table);

 

echo $dom->saveHTML();

PHP 相关文章推荐
php ajax 静态分页过程形式
Sep 02 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
php实现统计网站在线人数的方法
May 12 PHP
php关键字仅替换一次的实现函数
Oct 29 PHP
php连接oracle数据库的核心步骤
May 26 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
PHP内置过滤器FILTER使用实例
Jun 25 #PHP
PHP生成图片验证码、点击切换实例
Jun 25 #PHP
PHP生成随机密码类分享
Jun 25 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
Jun 25 #PHP
JavaScript创建命名空间的5种写法
Jun 24 #PHP
PHP获取windows登录用户名的方法
Jun 24 #PHP
You might like
用PHP和MySQL保存和输出图片
2006/10/09 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
javascript中的this详解
2014/12/08 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
ant design实现圈选功能
2019/12/17 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
python求众数问题实例
2014/09/26 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
QA工程师岗位职责
2013/11/20 职场文书
初一科学教学反思
2014/01/27 职场文书
会议活动邀请函
2014/01/27 职场文书
给小学生的新年寄语
2014/04/04 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
少年雷锋观后感
2015/06/10 职场文书
居安思危观后感
2015/06/11 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
MySQL 如何设计统计数据表
2021/06/15 MySQL
SpringBoot快速入门详解
2021/07/21 Java/Android
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL