返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中怎么截取HTML代码
  • 673
分享到

PHP中怎么截取HTML代码

2023-06-17 20:06:46 673人浏览 泡泡鱼
摘要

PHP中怎么截取html代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。需求:将一段文字截取一定的物理长度显示,注意,要截取的不是字符串的字节数,UFT-8 的编码中文字

PHP中怎么截取html代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

需求:将一段文字截取一定的物理长度显示,注意,要截取的不是字符串的字节数,UFT-8 的编码中文字符是3个字节或者4个字节的,而显示的时候中文会占两个字符的长度,英文字符只占一个,全角的时候又有不同。

而且给的数据是HTML代码串,比如这样:

< div class=”aaa”>< a href=”/aaa.php?id=1&Prime;>张三< /a> 评论了 < a href=”/aaa.php?id=444&Prime;>李四< /a> 分享的 < a href=”bbb.html”>一篇文章文章一长串的东西< /a>< /div>

PHP HTML截取代码的时候是要截取 div 标签内部的东西,而且要保留HTML标签,只是对其中的文字做处理。比如我可能只是截取到“李四”的“李”字,但是如果就这样放到前端的话,“李四”前面的 a 标签是没有闭合的,所以截取之后要保证HTML的语法正确。
这个问题确实不太好搞,让我郁闷了两天。请注意,这只是一个字符串,只不过内容是HTML代码,是没有什么DOM的。如果是在前端处理就好办了,直接DOM获取,然后对里面的节点进行处理,***把innerHTML 之类的东西输出就搞定了。现在可不行了,得换个思路。同事的思路是这样的:

遍历字符串的每一个字符。设置一个标记,碰到标签开始的标记< 就置为1,接下来的字符都不记数,然后碰到>之后再开始计数。对标签内部的字符串处理的时候,还要先判断当前字符的编码是不是可能是中文,一般来说PHP中 UTF-8 编码的中文字符的长度都是3,所以如果碰到是中文字符编码,就要跳过两个不记数&hellip;&hellip;说到这里我自己头已经开始大了。个人认为这种方法很不爽,首先这种精致的逻辑不太容易控制,而且 UFT-8 编码下中文产生的长度有可能是3个或4个 所以代码的严密性值得怀疑。

我个人的思路是,用 Tidy 来搞(具体用法请看PHP手册吧)。昨天研究了一下那个 Tidy ,发现这个东西还是挺好用的。首先,把这个字符串转换成 Tidy 对象,这样:

  1. $tidy = tidy_parse_string
    ($str, array(), &lsquo;utf8&prime;);   

  2. // ***一个是设置编码的,注意,
    这里是utf8 ,不是utf-8,没有中间那个连线。 

然后获取$tidy中的 body(因为转换之后$tidy会自动加上<head><body>等标签):
$body = tidy_get_body($tidy);
这个时候你可以用 var_dump 看一些 $body 的结构,会发现它把每个标签都变成了一个对应的对象,里面有相应的属性。举例来说,比如 <a href=”#”>sdf</a> ,这么一条语句对应的一些属性有:

name=>”a”
value => “<a href=”#”>sdf</a>”
child=> array{[0]=>一个文本节点对象,value是 sdf}
attribute=array{”href”=>”#”}
&hellip;..其他属性

可以看到,我们其实是可以单独去处理 a 标签对应节点下面的文字节点的值的,那样PHP HTML截取代码就不会破坏任何HTML完整性。原来我以为改变 a 标签中文字节点的值之后, a 标签的value也会跟着改变,那样我直接返回a标签对应节点的value就OK了,没想到不是那个样子,哎,所以处理过其中的文字之后还是要自己拼出新的HTML。
知道了Tidy对象的结构之后,一切就好办了,只要遍历所有的节点,对于本需求来说,就是找到那个 div 标签,然后开始处理里面的节点。代码如下:

  1. if(mb_strwidth($subchild->value, 
    &lsquo;utf-8&prime;) >= $len)   

  2. {   

  3. $subchild->value = mb_strimwidth
    ($subchild->value, 0, $len, &lsquo;&hellip;', &lsquo;utf-8&prime;);   

  4. $trimed_str .= $subchild->value;   

  5. break;   

  6. }   

  7. else   

  8. {   

  9. $trimed_str .= $subchild->value;   

  10. $len = $len - mb_strwidth($subchild->
    value, &lsquo;utf-8&prime;);   

  11. }  


里面的$subchild 就是一个子节点。注意,这里使用了 mb_strwidth 来获取字符串长度。严重推荐一下这个 mb_strwidth,很好用,它会把中文当作两个字符长度处理,正好符合这里的需求!而且PHP HTML截取代码的时候用到了 mb_strimwidth,这个函数也会把中文当作两个字符长度处理,mb_ 开头的函数真是好用啊。

关于PHP中怎么截取HTML代码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网PHP编程频道了解更多相关知识。

--结束END--

本文标题: PHP中怎么截取HTML代码

本文链接: https://lsjlt.com/news/292268.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP中怎么截取HTML代码
    PHP中怎么截取HTML代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。需求:将一段文字截取一定的物理长度显示,注意,要截取的不是字符串的字节数,UFT-8 的编码中文字...
    99+
    2023-06-17
  • php怎么截取头一个中文乱码
    本文操作环境:Windows7系统、PHP7.4版、DELL G3电脑php怎么截取头一个中文乱码?php解决中文截取乱码问题  针对截取字符串出现中文乱码问题,网上有很多介绍,也有很多函数,但笔者看着网上的函数,总感觉有点别扭,  所以自...
    99+
    2019-07-23
    php 乱码
  • php中文截取出现乱码怎么解决
    本篇内容介绍了“php中文截取出现乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在PHP中可以通过mb_substr函数来截取中...
    99+
    2023-06-20
  • html视频代码怎么获取
    获取 html 视频代码的方法有四种:从网页源代码中复制代码使用开发者工具使用视频播放器插件从视频托管网站获取嵌入代码 如何获取 HTML 视频代码? 获取 HTML 视频代码有以下几...
    99+
    2024-05-21
    视频播放器
  • 怎么在PHP中截取字符
    这篇“怎么在PHP中截取字符”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在PHP中截取字符”文章吧。一、截取字符在PH...
    99+
    2023-07-06
  • html中怎么实现截取图片功能
    这篇文章主要介绍了html中怎么实现截取图片功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html中怎么实现截取图片功能文章都会有所收获,下面我们一起来看看吧。一、HTML图片基础知识在HTML中,我们常常...
    99+
    2023-07-05
  • PHP中怎么截取中文字符串
    这期内容当中小编将会给大家带来有关PHP中怎么截取中文字符串,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。截取GB2312中文字符串< php    ...
    99+
    2023-06-17
  • Android应用中怎么获取网址的HTML代码
    本篇文章为大家展示了Android应用中怎么获取网址的HTML代码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体方法如下:public String getHTML(String aUrl, S...
    99+
    2023-05-31
    android html roi
  • html居中代码怎么写
    HTML居中是网页设计中经常使用的一种布局方式,实现方法也比较简单。本文将详细介绍几种实现HTML居中的方法和对应的代码实现。一、水平居中1.用text-align属性实现水平居中在父元素中设置text-align属性为center,可以实...
    99+
    2023-05-14
  • php中怎样截取字符串
    这篇文章主要介绍php中怎样截取字符串,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、中文截取:mb_substr()mb_substr(s t r , ...
    99+
    2023-06-15
  • html中怎么直接显示html代码
    小编给大家分享一下html中怎么直接显示html代码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签.通过这些标签可以将网络上的文档格式统一,使...
    99+
    2023-06-14
  • php如何截取头一个中文乱码
    这篇文章主要讲解了“php如何截取头一个中文乱码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何截取头一个中文乱码”吧!php截取头一个中文乱码的解决办法:1、创建一个PHP示例文件...
    99+
    2023-06-21
  • html 输出不了php代码怎么办
    本文操作环境:Windows7系统、PHP5版、DELL G3电脑html 输出不了php代码怎么办html内嵌php代码无法解析php, apache都安装完成,但是这样的代码,浏览器无法解析其的php代码.<html><...
    99+
    2020-08-22
    html php
  • golang截取中文乱码
    在使用Golang进行字符串截取时,可能会遇到截取中文字符的问题,导致输出乱码。这种现象的出现是因为中文字符编码问题所造成的。Golang中使用UTF-8编码来表示字符,而一个汉字在UTF-8编码下由三个字节组成。因此,如果不注意编码问题,...
    99+
    2023-05-15
  • HTML中的代码怎么注释
    这篇文章给大家分享的是有关HTML中的代码怎么注释的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   HTML注释   在HTML代码中,<!--和-->标签之间...
    99+
    2024-04-02
  • html中怎么内嵌CSS代码
    这篇“html中怎么内嵌CSS代码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“html中...
    99+
    2024-04-02
  • html中怎么调用JavaScript代码
    这篇“html中怎么调用JavaScript代码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“html中怎么调用JavaSc...
    99+
    2023-07-06
  • javascript截取字符串中文乱码怎么办
    这篇文章主要为大家展示了“javascript截取字符串中文乱码怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript截取字符串中文乱码怎么办...
    99+
    2024-04-02
  • php 输出html 代码不解析怎么办
    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑php 输出html 代码不解析怎么办php echo html的内容被解析了,是怎么回事呢,如图<php header('Content-Type:...
    99+
    2020-10-11
    php html
  • html输出不了php代码怎么解决
    本篇文章给大家分享的是有关html输出不了php代码怎么解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。html输出不了php代码的解决办法:1、打开httpd.conf;2...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作