我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP中怎么截取HTML代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP中怎么截取HTML代码

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代码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP中怎么截取HTML代码

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

下载Word文档

猜你喜欢

PHP中怎么截取HTML代码

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

php怎么截取头一个中文乱码

php截取头一个中文乱码的解决办法:1、创建一个PHP示例文件;2、设置“charset=utf-8”编码;3、通过“function str($str='',$len=0){...}”方法截取即可。
2019-07-23

php中文截取出现乱码怎么解决

本篇内容介绍了“php中文截取出现乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在PHP中可以通过mb_substr函数来截取中
2023-06-20

html视频代码怎么获取

获取 html 视频代码的方法有四种:从网页源代码中复制代码使用开发者工具使用视频播放器插件从视频托管网站获取嵌入代码如何获取 HTML 视频代码?获取 HTML 视频代码有以下几种方法:1. 从网页源代码中复制代码右键单击视频并选择“
html视频代码怎么获取
2024-05-21

怎么在PHP中截取字符

这篇“怎么在PHP中截取字符”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在PHP中截取字符”文章吧。一、截取字符在PH
2023-07-06

html中怎么实现截取图片功能

这篇文章主要介绍了html中怎么实现截取图片功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html中怎么实现截取图片功能文章都会有所收获,下面我们一起来看看吧。一、HTML图片基础知识在HTML中,我们常常
2023-07-05

PHP中怎么截取中文字符串

这期内容当中小编将会给大家带来有关PHP中怎么截取中文字符串,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。截取GB2312中文字符串< ?php //截取中文字符串 function m
2023-06-17

Android应用中怎么获取网址的HTML代码

本篇文章为大家展示了Android应用中怎么获取网址的HTML代码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体方法如下:/**** @param aUrl 网址* @param aEncode
2023-05-31

html居中代码怎么写

HTML居中是网页设计中经常使用的一种布局方式,实现方法也比较简单。本文将详细介绍几种实现HTML居中的方法和对应的代码实现。一、水平居中1.用text-align属性实现水平居中在父元素中设置text-align属性为center,可以实现其内部元素水平居中。例如:```html<div style="text-align:center;"> <p>这里是居中文本</p
2023-05-14

html中怎么直接显示html代码

小编给大家分享一下html中怎么直接显示html代码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签.通过这些标签可以将网络上的文档格式统一,使
2023-06-14

php中怎样截取字符串

这篇文章主要介绍php中怎样截取字符串,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、中文截取:mb_substr()mb_substr(s t r , str,str,start,l e n g t h , le
2023-06-15

html 输出不了php代码怎么办

HTML中输出PHP代码的解决方法当HTML中无法输出PHP代码时,可尝试以下解决方案:检查服务器环境和PHP配置检查文件权限和PHP语法检查输出缓冲区使用PHPecho/print函数或heredoc/nowdoc文档启用PHP短标签(不推荐)通过这些解决方案,可确保PHP代码正确输出到HTML文档中,避免常见问题。
html 输出不了php代码怎么办
2024-04-26

html 输出不了php代码怎么办

html输出不了php代码的解决办法:1、打开httpd.conf;2、添加“AddHandler php5-script .php .html AddType text/html .php .html”;3、重启服务即可。
2020-08-22

php如何截取头一个中文乱码

这篇文章主要讲解了“php如何截取头一个中文乱码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何截取头一个中文乱码”吧!php截取头一个中文乱码的解决办法:1、创建一个PHP示例文件
2023-06-21

html中怎么调用JavaScript代码

这篇“html中怎么调用JavaScript代码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“html中怎么调用JavaSc
2023-07-06

html输出不了php代码怎么解决

本篇文章给大家分享的是有关html输出不了php代码怎么解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。html输出不了php代码的解决办法:1、打开httpd.conf;2
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录