广告
返回顶部
首页 > 资讯 > 后端开发 > 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://www.lsjlt.com/news/292268.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 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
  • 怎么在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
  • php中怎样截取字符串
    这篇文章主要介绍php中怎样截取字符串,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、中文截取:mb_substr()mb_substr(s t r , ...
    99+
    2023-06-15
  • Android应用中怎么获取网址的HTML代码
    本篇文章为大家展示了Android应用中怎么获取网址的HTML代码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体方法如下:public String getHTML(String aUrl, S...
    99+
    2023-05-31
    android html roi
  • php如何截取头一个中文乱码
    这篇文章主要讲解了“php如何截取头一个中文乱码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何截取头一个中文乱码”吧!php截取头一个中文乱码的解决办法:1、创建一个PHP示例文件...
    99+
    2023-06-21
  • javascript截取字符串中文乱码怎么办
    这篇文章主要为大家展示了“javascript截取字符串中文乱码怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript截取字符串中文乱码怎么办...
    99+
    2022-10-19
  • php怎么截取数组后几位
    本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑php截取数组后几位元素1、使用array_slice()函数array_slice()函数就是PHP提供的用来截取数组的一个函数,可以从数组中提取出一个片段。语法如下...
    99+
    2020-11-04
    php 截取数组
  • php怎么截取指定字符串
    要截取指定字符串,可以使用PHP中的substr函数。substr函数有三个参数:要截取的字符串、开始截取的位置和截取的长度。以下是...
    99+
    2023-08-16
    php
  • html居中代码怎么写
    HTML居中是网页设计中经常使用的一种布局方式,实现方法也比较简单。本文将详细介绍几种实现HTML居中的方法和对应的代码实现。一、水平居中1.用text-align属性实现水平居中在父元素中设置text-align属性为center,可以实...
    99+
    2023-05-14
  • Android中截取当前屏幕图片的实例代码
    代码如下:    private void GetandSaveCurrentImage()      ...
    99+
    2022-06-06
    图片 Android
  • html中怎么直接显示html代码
    小编给大家分享一下html中怎么直接显示html代码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签.通过这些标签可以将网络上的文档格式统一,使...
    99+
    2023-06-14
  • html 输出不了php代码怎么办
    本文操作环境:Windows7系统、PHP5版、DELL G3电脑html 输出不了php代码怎么办html内嵌php代码无法解析php, apache都安装完成,但是这样的代码,浏览器无法解析其的php代码.<html><...
    99+
    2020-08-22
    html php
  • html中怎么内嵌CSS代码
    这篇“html中怎么内嵌CSS代码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“html中...
    99+
    2022-10-19
  • HTML中的代码怎么注释
    这篇文章给大家分享的是有关HTML中的代码怎么注释的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   HTML注释   在HTML代码中,<!--和-->标签之间...
    99+
    2022-10-19
  • html中怎么调用JavaScript代码
    这篇“html中怎么调用JavaScript代码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“html中怎么调用JavaSc...
    99+
    2023-07-06
  • C#中怎么截取字符串
    这篇文章给大家介绍C#中怎么截取字符串,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#截取字符串应用:C#截取指定长度中英文字符串方法public static string GetFi...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作