php输出html

Tumult Whisk for mac(HTML和PHP编辑器)

Tumult Whisk是一个轻量级的HTML和PHP编辑器,具有实时预览,可在您键入时更新。Whisk是您工具包中用于HTML,PHP,CSS和javascript编程的必备应用程序。这对于学习Web开发,测试代码段或构建整个网页非常有用。

Tumult Whisk for mac软件特点

实时预览的力量

Tumult Whisk的集成实时预览打破了编写HTML,保存文件,然后重新加载并在浏览器中查看页面的繁琐循环。将写作阶段和查看阶段结合起来可以阐明更改的效果,并加快制作网页的整个过程。基于W3C的验证将在所有错误下加红色下划线。它使用与Safari中相同的渲染引擎,因此它不仅符合标准,而且速度非常快。

预览窗格使用与Safari相同的引擎快速按输入内容呈现HTML和PHP

“监视的文件”自动(或手动)确定何时更改文件,并将重新加载Web预览

基于实时HTML W3C的验证显示错误并用红色下划线突出显示问题标签

预览到其他浏览器或iOS上的Hype Reflect应用

Web检查器/控制台/开发工具访问

可自定义的语法突出显示颜色

可重用的代码段和色样

滚动同步保持可将编辑器和预览保持在相似位置

查看PHP引擎生成的HTML源代码

附加样式表以查看博客帖子/标记在外部样式下的外观

仅作为macOS应用在Cocoa中编写(支持10.11至10.15)

采用新的macOS功能,在明暗模式下均表现出色

小编点评

使用Tumult Whisk mac特别版你可以测试和执行PHP代码、编写博客文章,论坛条目或丰富的电子邮件、运行和调试JavaScript、并创建整个网站。

展开
收起

phpcms内容截取字段保留html格式

准确说这个教程网上很多人都写过,但是不知道是版本升级还是教程的人没有写完全,苦了后来的人了。str_cut这个可以截取内容,

{str_cut($content,3000)}

这么写会产生具有html显示出来的内容,不美观。

{str_cut(strip_tags($content),3000)}

这么写,会美观很多,但是问题是!不保留html格式,会显得直白又不显得那么完美。那么修改呢?

{html_cut($content,3000)}

这么写就绝对没问题,你只需要改动一点小地方。

/*** 字符截取 支持UTF8/GBK 但保留HTML格式 * @param $string * @param $length * @param $dot */ function html_cut($string, $length, $dot = '...') { $strlen = strlen($string); if($strlen <= $length) return $string; $string = str_replace( array(' ',' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array('∵',' ', '&', '"', "'", '“', '”', '—', '<.', '.>', '·', '…'), //<.和.>是为了保证不与HTML的尖括号冲突 $string); $strcut = ''; if(strtolower(CHARSET) == 'utf-8') { $length = intval($length-strlen($dot)-$length/3); $n = $tn = $noc = 0;while($n < strlen($string)) { $t = ord($string[$n]);if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t <= 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; }if($noc >= $length) {break; } }if($noc > $length) { $n -= $tn; }if($n + 1 <= strlen($string)) { $cross_word = substr($string, $n - 1, 2);if($cross_word == '<.' || $cross_word == '.>') { $n += 1; //确保截断后包含完整的<.和.> } } $strcut = substr($string, 0, $n); $strcut = str_replace( array('∵', '&', '"', "'", '“', '”', '—', '<.', '.>', '·', '…'), array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut); } else { $dotlen = strlen($dot); $maxi = $length - $dotlen - 1; $current_str = ''; $search_arr = array('&','', '"', "'", '“', '”', '—', '<.', '.>', '·', '…','∵'); $replace_arr = array('&','', '"', ''', '“', '”', '—', '<', '>', '·', '…',' '); $search_flip = array_flip($search_arr); for ($i = 0; $i < $maxi; $i++) { $current_str = ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; if($i + 1 < strlen($string)) { $cross_word = substr($string, $i, 2); if($cross_word == '<.' || $cross_word == '.>') { $current_str .= $string[++$i]; //确保截断后包含完整的<.和.> } } if (in_array($current_str, $search_arr)) { $key = $search_flip[$current_str]; $current_str = str_replace($search_arr[$key], $replace_arr[$key], $current_str); } $strcut .= $current_str; } } return $strcut.$dot; }

网上的教程一般会告诉你放到phpcms\libs\functions里面的extention.func.php或者global.func.php里面。我很高兴的告诉你,放到两个里面都是可以的,能解决很多的情况了。问题是,如果要是你限制的这部分内容只能会员才能观看,或者指定会员组才能观看,那我很高兴的告诉你,坑爹的来了,内容里面含有代码的一律只显示一点点,然后不论怎么修改都是不显示的。解决办法很简单,

functionstr_cut1($string, $length, $dot = '...'){return mb_substr($string,0,$length,'utf-8').$dot;}

放到\phpcms\libs\functions里面的extention.func.php或者global.func.php里面。ok,解决了?没有!内容页显示的那些正常了,你添加在这个代码后面的代码就苦逼了,因为自动不生效,还自动添加了span的标签,导致你写好的温馨提示一个都不顶用!!!!处理办法:写js,把你的代码转换成js刷出来。写文件,直接写进content这个文件夹下,{template "content","wl"}就这么直接调用,单独的文件需要写成html语言,要有body之类的玩意。ok!解决了!完美解决。

{if $_userid && $_groupid != 2&& $_groupid != 1&& $_groupid != 6&& $_groupid != 7}{$content} <!-- 会员显示的界面内容 --> {elseif $_username} {str_cut1($content,3000)} {template "content","lg"}<!-- 用户登录之后显示界面 --> {else} {str_cut1($content,2000)}{template "content","wl"}<!-- 用户登录之前显示界面 --> {/if}

顺便把phpcms判断用户用户组是否为会员的代码也一并添上。我跟你吐槽,我们老板是个坑逼,有现成的代码我说参考一下,竟然直接不回信,生怕我拿走了别的什么东西一样。不想说话,干脆自己找到了办法,大家一起分享。希望对大家有作用。

展开
收起

黑马程序员:PHP程序员必看之HTML5实现服务器推送(含源代码)

模板核心代码:

<!DOCTYPE html><html><body><h1>HTML5实现服务器推送</h1><div id="rate"></div><script>// 1 判断当前浏览器是否支持html服务器推送server-send事件if(typeof(EventSource)!=="undefined") {// 2:定义数据来源的服务器url地址 var URL = "/getData.php"; // 3: 创建一个新的 EventSource 对象,然后指定发送更新的页面的 URL var source=new EventSource(URL); // 4 : 每接收到一次更新,就会发生 onmessage 事件 source.onmessage=function(event) { // 5: 若触发onmessage函数的时候, 把接收到的最新数据更新到 id 为 "rate" 的元素中 document.getElementById("rate").innerHTML+=event.data + "<br>"; };} else { document.getElementById("rate").innerHTML="抱歉,您的浏览器不支持 server-sent 事件 ...";}</script></body></html>

服务器端核心代码:

<?phpheader('Content-Type: text/event-stream');header('Cache-Control: no-cache');$time = date('Y-m-d H:i:s', time());// 此处可通过接口实时获取美元兑人民币实时汇率$rate = '1:6.9384';echo "data:北京时间:{$time} 当前美元兑人民币实时汇率是:{$rate}\n\n";flush();?>

效果图如下:

展开
收起

你觉得哪个对网站seo运营更好?网页使用html VS php

有一部分站长认为网站页面的程序类型会影响seo的优化效果,关于这一点其实在seo方面并没有定论,科思只能说存在即合理。今天一起来聊聊不同的网页编程语言类型对网站seo收录的影响,主要分析静态html和动态php。

编程语言

大家首先要了解编程语言什么是。所谓编程语言(programming language)是指将人的需求处理为机器能够读懂的语言。在这里我的的编程语言是仅仅指WEB网页编程,主要针对浏览器页面显示开发的语言,也就是说我们在做网站时应该选择什么样的编程语言。

html

静态html与动态php

html是一种标记语言全称Hyper Text Markup Language,直译为超文本标记语言,我们平时在看网站的时候看到网址最后面只要后缀是.html或者.htm的都属于html语言,其实无论网站主使用的什么语言用来开发,你所看到的全都是html语言,因为浏览器只能够识别并解析html,html发展到现在已经是5.0的版本也就是平常所说的html5,之前使用最多的是4.0版本。

因为大部分的公司的SEO运营专员后端功底有限,也就会简单的修改一下html格式的文件。如果使用过cms的站长或者做过开发的人肯定知道php,在这里也并不是说html静态语言就一定比php动态语言要好。

php动态语言

php动态语言

php讲到 PHP 的全名就蛮有趣的,它是一个巢状的缩写名称,"PHP: Hypertext Preprocessor",打开缩写还是缩写。中文理解为超文本预处理器,是一种通用的开源脚本语言。而 PHP 独特的语法混合了 C、Java、Perl 以及 PHP 式的新语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。使用php的程序员都会说,php是最好的语言,但是在程序届很多人说php是最垃圾的语言,我只想说说:只有适合自己的才是最好的。

php因其在web开发中具备效率高,低成本等特点,所以被广大的老板选择,毕竟成本和速度往往能决定一个项目的发展,选择什么语言可不是程序员能做主的,作为一名合格的SEO运营优化对php的学习也是必不可缺的,掌握的技能越多,SEO才能更好的拓展和改变自己的思维。

seo优化

前面提到html是静态语言,也是网页最初的形态。静态语言的优点有加载速度快,因为浏览器向服务器要什么服务器就直接给什么,对于服务器的要求也非常低,缺点也是非常大的,就是不能动态的显示信息,比如用户不能够和网站进行交互,不能够进行评论,弹幕,提交表单等操作。服务器上有什么就显示什么。php作为一门动态语言,好处就是开始实现更多的功能,可以连接数据库,动态的显示最新的内容,比如产品的价格是实时变动的有些股票啊,微博啊都是用户都是可以随时编辑和提交的。可以说是各有利弊,在之前前几年的时候大家都用过生成静态页面功能就是将php的页面生成html以便提升用户的访问速度,加快浏览器的收录。现在网速都飞快而且搜索引擎也是高速发展不存在html一定比php好的定论了。

关于什么样的网页编程语言更有利于网站的seo优化科思就聊到这里,如果你有不一样的观点,欢迎评论区留言交流。更多资讯请关注:科思

展开
收起

网站的语言选择(PHP,HTML,JS,NET)

这里所说的语言,指的是开发使用的语言,比如ASP、JSP、PHP、NET,当然还有HTML,但是通过HTML纯文本建站的网站几乎绝迹了。

其实,从网站安全、内容展现和蜘蛛爬行方面来说,使用任何开发语言都可以,但是相对来说,PHP可以更好地执行动态语言,而且负载更大,如果使用PHP语言,可能对于某些网站来说更好一些。

对SEO影响的可能是动态、静态之分导致的框架相似的问题。如果采用PHP统一将大量页面处理为一个框架,比如在某些页面实质内容比较少的情况下,就有可能出现页面相似度高的问题,而使用HTML的方式手动来编辑的页面,就不存在这个问题,可以手动调整得更好。

展开
收起

php过滤htmlspecialchars()函数把预定义的字符转换为HTML实体

这个函数非常重要,特别是在处理中文字符时,同时开发过程中往往需对写入数据库或读取数据库的数据进行处理。

htmlspecialchars(string,flags,character-set,double_encode)

1、string:必需。规定要转换的字符串。2、flags:可选,规定如何处理引号、无效的编码以及使用哪种文档类型,如ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES3、character-set:可选,顾名思义字符集,默认utf-8,当然支持很多编码,这里不列举4、double_encode:可选,一个规定了是否编码已存在的 HTML 实体的布尔值。

预定义的字符是:1、& (和号)成为 &2、” (双引号)成为 ”3、’ (单引号)成为 ‘4、< (小于)成为 < > (大于)成为 >

那么什么是HTML实体?1、 在 HTML 中,某些字符是预留的。2、在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签,当然在HTML中还有其他实体3、如果希望正确地显示预留字符,我们必须在HTML源代码中使用字符实体(character entities)。4、如需显示小于号,我们必须这样写:< 或 <使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。

<?php$str = "Apple & 'Orange'";echo htmlspecialchars($str, ENT_COMPAT); // 默认,仅编码双引号 //在右键查看源代码下结果为:Apple & 'Orange' echo htmlspecialchars($str, ENT_QUOTES); // 编码双引号和单引号 //在右键查看源代码下结果为:Apple & 'Orange' echo htmlspecialchars($str, ENT_NOQUOTES); // 不编码任何引号 //在右键查看源代码下结果为:Apple & 'Orange'//扩展阅读htmlspecialchars_decode() — 将特殊的 HTML 实体转换回普通字符 ?>

展开
收起

php,过滤,过滤html标签,过滤html

今天在做需求的时候遇到一个问题,就是数据内容中包含html标签(主要是因为里面的a标签冲突),然后这个内容是放在一个a标签内的,我在遍历的时候发现,页面无法显示内容,于是百度了一下,发现a标签内不能再套用a标签,说明如下:

说明:a标签不能嵌套,若a标签中嵌套了a标签,浏览器会自动添加结束符号,故不能嵌套

例如:

悦遇博客 悦遇商城

浏览器解析:

悦遇博客 悦遇商城如果代码结构复杂,会导致html层级错乱

不能嵌套的还有: h不能直接套h标签 p标签是不可以套块标签的

解决办法:1:span点击触发事件

悦遇博客 悦遇商城

function redict(canshu) { //接下来使用js代码进行页面跳转 window.location.href = canshu; }

2:使用php的htmlspecialchars() 函数

$str='悦遇博客 悦遇商城 ';echo htmlspecialchars($str);

输出如下:

& lt;a href="& gt;悦遇博客 & lt;a href="shop.meetoyou.com"& gt; 悦遇商城& lt;/a& gt;3:使用php的strip_tags()函数

$str="悦遇博客";echo strip_tags($str);

输出如下:

悦遇博客

strip_tags和htmlspecialchars区别

php htmlspecialchars函数用于将预定于的字符转换为html实体,而strip_tags函数用于去除过滤掉html或php标签,从字面意思上看,二者描述不一样,但是他们都可以用来去掉html标签,那么这两个函数在去除html标签上到底用什么区别呢?

区别一:

strip_tags函数使用来去除HTML标签的,而htmlspecialchars并没有去除html标签,只是把标签转换为HTML实例,所以二者之间最大的区别是一个是删除掉HTML标签,一个是将html标签转换为其他字符。

区别二:

如果需要去除HTML标签的字符串里面的标签原来就有错,例如少了大于的符号,在使用strip_tags函数会传回错误,而htmlspecialchars不会有错误出现,依然后转换为HTML实体。

区别三:

在防止XSS攻击时,一般建议使用htmlspecialchars函数,因为strip_tags虽然可以删除HTML标签,但是它不会删除"或'。因此就算你使用了strip_tags,仍然需要使用htmlspecialchars函数来过滤掉"或'

在表单提交或用户留言板里,如果你希望数据原始输出带浏览器,那么请使用htmlspecialchars函数,不要使用strip_tags函数。

展开
收起

0060 PHP代码嵌入到HTML网页当中

前面2节课全部都是之前写过的程序重新用PHP编程语言来实现。

这节课开始学习如何使用PHP结合HTML网页来实现具体的动态数据网页。

学哥计划做一个学生分数管理功能的网页,首先来做一个一览查询页面。

查询页面上可以输入一些查询条件,例如学生姓名或者科目等信息,点击查询按钮之后,下面显示相应的查询结果,查询结果使用表格的形式来显示。

PHP嵌入HTML的方式

前面几节课都是纯粹的PHP代码,然后通过php命令执行php文件代码的方式来运行PHP代码。

在这一章的第一节课里面,其实已经学习过将PHP代码嵌入HTML网页中的方式,来复习一下:

echo "Hello World";

?>

可以看到,虽然这个文件名最后保存为helloworld.php,但是其本质还是一个html规范格式文件,因为最终这个文件的内容是要显示在浏览器当中的,所以起本质仍然是一个html规范文件。

PHP代码的作用,仅仅是通过动态编程语言生成需要的数据或者是显示格式。

可以这样理解,PHP代码在服务器端运行,运行结束后的文件内容是HTML内容。这样的好处不言而喻,可以根据需求对每一个客户端浏览器生成完全不同的网站内容。

上面的代码,其实也可以完全用PHP代码来实现:

echo "";

echo "";

echo "Hello World";

echo "";

echo "";

?>

这段代码运行起来的结果,和上面的一段代码运行的结果是一模一样的。

这也就是说,在PHP代码里面,不在这组开始和结束标签里面的内容,其实就是默认相当于使用echo输出的方式返回给浏览器的。这也是PHP的一种默认的代码规范。

除了echo函数外,使用其他的标准输出函数,也是类似于echo一样,将输出内容返回到浏览器的。例如print函数、print_r函数、var_dump函数等等。只不过输出的内容如果不符合html规范的话,可能显示在浏览器里面就不是期望的样子了。

编写一览查询页面

创建2个文件studentlist.php文件和student.css文件。

参照之前的index.html和index.css样式,编写html文件和显示样式。

先通过div分成上下3个区域,最上面显示一个标题“学生信息查询”,然后下面2个div分别显示查询条件和查询按钮。

查询条件如下:姓名(文本输入)/性别(单选)/科目(多选)/分数段(下拉框选择)。

下面的区域显示查询一览结果,使用table显示,第一行是表头,显示下列数据:

ID/姓名/性别/科目/分数。

修改studentlist.php文件:

修改student.css文件:

将这2个文件部署到本地服务器的相应目录中,然后启动本地Web服务程序,然后通过浏览器访问这个php网页:

然后在下面一行的td里面编写显示查询一览结果的table。

显示下列数据:ID/姓名/性别/科目/分数。

第一行是表头,第二行是数据。表头和数据的显示样式可以不一样,以示区别。

修改studentlist.php文件:

修改student.css文件,新增下列代码:

刷新网页:

可以看到网页中显示了一个表格,内容是学生分数查询结果。

将数据行复制多行,并且让奇数行和偶数行显示不一样的底色,这样看起来更美观。

修改studentlist.php文件:

修改student.css文件,增加一个样式tdb:

刷新网页:

可以看到表格显示了多行数据,并且行之间有明显分隔。

使用PHP代码循环显示一个table的数据

通过编写静态html内容的方式,可以完成显示样式的编码。

然后将这里的多行显示内容修改为用PHP代码来动态生成。

首先将刚刚增加的4行数据行删除,只保留一行数据。

然后,在这个数据行的前面和后面分别增加PHP代码,将这行数据放入一个for循环当中,也就是让这行数据重复显示5次。

修改studentlist.php文件:

刷新网页:

可以看到,页面显示5行完全一模一样的数据。这就是PHP代码的威力。

如果要将5行变成100行,也只需要修改一个数字即可。而如果是纯粹的HTML代码,要重复100行的话,也要花很多时间进行复制粘贴。

如果要将奇数行和偶数行的显示变得不一样,可以这样修改:

首先设置一个用于显示样式是tda还是tdb的变量,名字为tds;

然后根据当前行是偶数行则赋予tds的值为tdb字符串;

然后在需要显示样式的地方,输出这个变量。这样循环当中,当变量$i变化时,对2求模的结果会是0或者1,也就是奇数还是偶数,这样变量tds的值就会变成tda或者tdb,最后输出的时候就会不一样了。

修改studentlist.php文件:

刷新网页:

如果要将这5行的ID和姓名显示的不一样,应该怎么处理呢?

一个简单的办法就是修改显示的内容为跟随当前循环变量来生成:

修改studentlist.php文件,同时调整代码的分行位置:

刷新网页:

可以看到,每一行的ID和名字都不一样了。

当然,在实际项目中,一般是不采用这样的方式的,一般来说,整个数据结果集肯定是一起返回到页面显示的地方,然后通过访问这个数据结果集来嵌入到HTML的table里面来进行显示的。

一般的方式是采用二维数组变量来保存数据结果集的。

增加一个变量$alldatas,然后内容是二维数据,外面一层是每一行的意思,里面一层用键和值来表示不同的字段数据。

然后显示循环内部,通过访问这个二维数组的某个键来获得对应的数据,并通过echo来输出到网页内容中。

修改studentlist.php文件:

刷新网页:

可以看到数据显示了5行,每一行的姓名都是按照数组变量中的值来进行显示。通过这样的方式,可以很方便的显示出后台数据。

但是有一个不正确的地方,那就是数据的行数长度为5,代码仍然是用for循环5次,加入数据的行数长度不是5,那么这里for循环就不正确了。应该改为foreach针对二维数组变量进行遍历循环,这样才能完全按照存储变量的数据来显示行数和内容。

修改循环方式和变量显示,同时将其他的字段都修改为按照这样的方式来显示。

修改studentlist.php文件:

刷新网页:

可以看到,所有的显示内容都是依赖于数组变量里面存储的值了。只要修改这个变量里面存储的数据,网页就会显示不同的内容了。

这就是动态网站的精髓之所在。

编写各个查询项目和查询按钮

接下来,编写上面的查询条件和查询按钮。

在3-4这一节当中,大致介绍了各种输入项的编写方式,来复习一下:

可以在网页上显示一个文本输入框。

可以在网页上显示一个单选按钮。

可以在网页上显示一个多选按钮。

可以在网页上显示一个按钮。

使用select元素可以显示一个下拉框。

选项1

选项2

以上代码可以在网页中显示一个下拉框选项,里面有2个选择项目。

按照以上方式,在上面区域中增加下列查询条件和一个查询按钮。

姓名(文本输入)/性别(单选)/科目(多选)/分数段(下拉框选择)/查询按钮。

首先来规划一下这5个项目如何摆放在页面中。

打算将查询按钮放在最右侧,然后左边分成上下2行,上面一行分成3列,分别显示姓名和性别和分数段;

下面一行由于是科目多选,需要的长度比较长,因此下面一行占用3列宽度,这样正好利用table的合并单元格属性来实现。

首先,写好table的各个tr和td的分布,将边框显示出来,验证排版是否正确:

修改studentlist.php文件:

刷新网页看看效果:

然后,编写所有的查询条件和查询按钮:

修改studentlist.php文件:

修改student.css文件:

刷新网页看看效果:

可以看到,查询网页已经基本成型了,那么接下来就是实现点击查询按钮之后的功能,也就是根据输入不同的条件,返回不同的查询数据结果。

特别说明

这节课的内容非常关键,是编写动态网站的核心入门教程。由于这节课的内容用到了很多之前课程的相关内容,如果大家是碰巧第一次看到这篇文章的话,可能有很多不明白的地方,那么可能需要看看学哥之前写的文章,建议从0001这节课开始看,这样前后有连贯,才会更好的理解。

展开
收起

专栏给你代码:让PHP像jQuery一样操作HTML

在一些网页抓取和分析的业务场景中,我们将会用到这样一款利器:PHP Simple HTML DOM Parser (以下简称SHDP, 下载地址请找小编索取)。这个解析器支持非严格标准的HTML片段,比其他使用复杂正则表达式从web页面中提取信息的PHP脚本的表现要好很多,如果你用过jQuery,上手这个工具几乎是无缝切换。

将HTML内容转为对象

有三种方式可以将目标HTML内容转换为simple_html_dom对象,该对象提供了对HTML元素的链式操作支持。

SHDP内置了两个方法:file_get_html()和str_get_html(),用以快速构造simple_html_dom开箱对象。两者的区别是前者是从远程地址或文件中加载HTML内容并构造对象:

$html = file_get_html('https://www.kunquer.com/');

后者则是从字符串中构造对象:

$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');

当然也可以不用上面两个快捷方法,而是实例化simple_html_dom类,一步一步做设置:

// 实例化$html = new simple_html_dom();// 从远程加载HTML$html->load_file('https://www.kunquer.com/');// 从本地文件加载HTML$html->load_file('test.htm');// 从字符串中加载HTML$html->load('<html><body>Hello!</body></html>');

选定操作元素

// 获取所有a元素,返回一个对象数组$ret = $html->find('a');// 获取第一个a元素$ret = $html->find('a', 0);// 获取最后一个a元素$ret = $html->find('a', -1);// 获取所有有id属性的div元素$ret = $html->find('div[id]');// 获取所有id属性为foo的div元素$ret = $html->find('div[id=foo]'); // 获取id属性为foo的元素$ret = $html->find('#foo', 0);// 获取所有类名包含foo的元素$ret = $html->find('.foo');// 获取所有包含id属性的元素$ret = $html->find('*[id]');// 获取所有a元素和img元素$ret = $html->find('a, img');// 获取所有含有title属性的a元素和img元素$ret = $html->find('a[title], img[title]');// 获取所有包含在ul元素下的li元素$es = $html->find('ul li');

怎么样,是不是非常像jQuery了?接下来我们需要对选定的元素进行读取或修改操作。

读取和修改节点

读取节点内容:

$html = str_get_html('<div>foo <b>bar</b></div>');$e = $html->find('div', 0);echo $e->tag; // 输出元素类型:'div'echo $e->outertext; // 输出整体html内容:'<div>foo <b>bar</b></div>'echo $e->innertext; // 输出内部html内容:'foo <b>bar</b>'echo $e->plaintext; // 输出文本内容:'foo bar'

修改节点内容:

// 在元素外层包裹一层div$e->outertext = '<div class="wrap">' . $e->outertext . '<div>';// 移除元素,只需要将outertext置空$e->outertext = '';// 追加元素$e->outertext = $e->outertext . '<div>foo<div>';// 插入元素$e->outertext = '<div>foo<div>' . $e->outertext;

我们也可以对元素属性进行同样的操作:

$e = $html->find('a', 0);// 修改a元素的href属性$e->href = 'my link';//移除a元素的href属性$e->href = null;// 判断属性是否存在if(isset($e->href)) echo 'href exist!';

遍历DOM树

SHDP提供了以下遍历方法:

方法 描述mixed$e->children ( [int $index]) 如果设置了索引,则返回第n个子对象,否则返回子对象数组element$e->parent () 返回父元素element$e->first_child () 返回元素的第一个子元素,如果没有找到则返回nullelement$e->last_child () 返回元素的最后一个子元素,如果没有找到则返回nullelement$e->next_sibling () 返回元素下一个兄弟元素,如果没有找到则返回nullelement$e->prev_sibling () 返回元素上一个兄弟元素,如果没有找到则返回null

你可以像这样遍历HTML内容:

echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;

或者这样:

echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');

保存更改的HTML

// 将DOM树转换成字符串$str = $html->save(); // 将DOM树转换成字符串,并保存在result.html文件中 $html->save('result.htm');

往期回顾:

给你代码:关于npm的坑

vue简单状态管理,给你代码

随机密码生成器|给你代码

展开
收起

php htmlspecialchars()函数将特殊字符转换为HTML实体

htmlspecialchars()函数定义及用法

在php中,htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志;

被转换的预定义的字符有:

&:转换为&amp;":转换为&quot;':转换为成为 '<:转换为&lt;>:转换为&gt;htmlspecialchars()函数有四个参数,第一个参数规定了需要转换的字符串;第二个参数规定了如何处理引号、无效的编码以及使用哪种文档类型,是可选参数;第三个参数也是可选参数,规定了要使用的字符集的字符串;第四个参数也是可选参数,规定了是否编码已存在的 HTML 实体的布尔值(TRUE:将对每个实体进行转换;FALSE:不会对已存在的HTML实体进行编码);

htmlspecialchars()函数语法格式:

$str = htmlspecialchars(string,flags,character-set,double_encode);

参数说明

string:规定要转换的字符串;flags :可选参数,规定如何处理引号、无效的编码以及使用哪种文档类型;可用的引号类型:

ENT_COMPAT:默认。仅编码双引号。ENT_QUOTES:编码双引号和单引号。ENT_NOQUOTES:不编码任何引号。无效的编码:

ENT_IGNORE:忽略无效的编码,而不是让函数返回一个空的字符串。应尽量避免,因为这可能对安全性有影响。ENT_SUBSTITUTE: 把无效的编码替代成一个指定的带有 Unicode 替代字符 U+FFFD(UTF-8)或者 &#FFFD; 的字符,而不是返回一个空的字符串。ENT_DISALLOWED: 把指定文档类型中的无效代码点替代成 Unicode 替代字符 U+FFFD(UTF-8)或者 &#FFFD;。规定使用的文档类型的附加 flags:

ENT_HTML401 - 默认。作为 HTML 4.01 处理代码。ENT_HTML5:作为 HTML 5 处理代码。ENT_XML1:作为 XML 1 处理代码。ENT_XHTML: 作为 XHTML 处理代码。character-set :可选。一个规定了要使用的字符集的字符串。允许的值:

UTF-8:默认。ASCII 兼容多字节的 8 位 UnicodeISO-8859-1:西欧ISO-8859-15:西欧(加入欧元符号 + ISO-8859-1 中丢失的法语和芬兰语字母)cp866:DOS 专用 Cyrillic 字符集cp1251:Windows 专用 Cyrillic 字符集cp1252: Windows 专用西欧字符集KOI8-R: 俄语BIG5 :繁体中文,主要在台湾使用GB2312: 简体中文,国家标准字符集BIG5-HKSCS:带香港扩展的 Big5Shift_JIS:日语EUC-JP:日语MacRoman:Mac 操作系统使用的字符集注释:在 PHP 5.4 之前的版本,无法被识别的字符集将被忽略并由 ISO-8859-1 替代。自 PHP 5.4 起,无法被识别的字符集将被忽略并由 UTF-8 替代。

double_encode:可选参数,一个规定了是否编码已存在的 HTML 实体的布尔值(TRUE:默认,将对每个实体进行转换;FALSE:不会对已存在的 HTML 实体进行编码);更新日志:

在 PHP 5 中,character-set 参数的默认值改为 UTF-8。在 PHP 5.4 中,新增了:ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_HTML5、ENT_XML1 和 ENT_XHTML。在 PHP 5.3 中,新增了 ENT_IGNORE。在 PHP 5.2.3 中,新增了 double_encode 参数。在 PHP 4.1 中,新增了 character-set 参数。实例:

<?php

header("content-type:text/html;charset=utf-8");//设置编码,解决中文乱码

$string = "ggbiji & 'ggbiji'";

$string1 = htmlspecialchars($string, ENT_COMPAT); // 默认,仅编码双引号

$string2 = htmlspecialchars($string, ENT_QUOTES); // 编码双引号和单引号

$string3 = htmlspecialchars($string, ENT_NOQUOTES); // 不编码任何引号

echo $string1."<br/>\n";

echo $string2."<br/>\n";

echo $string3."<br/>\n";

?>

运行结果:

htmlspecialchars()函数图1

HTML输出如下(查看源代码):

htmlspecialchars()函数图12

展开
收起