|
本文介绍下,用php实现获取标签之间文本的几个例子,有需要的朋友参考下。
以下例子提供了一种在标签之间检索文本的方法。 注意:不要使用正则表达式解析html。 通过使用正则表达式preg_match()、preg_match_all()函数,这二个函数进行的工作类似于php循环一样,多次遍历得到想要的结果。 另外,使用dom函数可以加快解析速度,得到干净的解析结果。 下面这个例子,使用 preg_match()函数来实现。 代码:
<?php /**
*
* @get text between tags
*
* @param string (The string with tags)
*
* @param string $tagname (the name of the tag
*
* @return string (Text between tags)
*
*/
function getTextBetweenTags($string, $tagname)
{
$pattern = "/<$tagname>(.*?)/";
preg_match($pattern, $string, $matches);
return $matches[1];
}
?>
注意:以上实现了一个简单的标签获取函数,不过它无法处理嵌套的标签,以及不完整的标签。 通过使用php的dom扩展,可以轻松解决这个问题。 来看下面的例子,函数本身有三个参考: $tag 标签之间的文本 $html 要搜索的HTML或XML $strict 告诉函数加载HTML或XML模式,默认为HTML模式。 第三个参数,允许设置函数来解析XML和一些XHTML文档中发现的自定义标签。 代码:
<?php /**
*
* @get text between tags
*
* @param string $tag The tag name
*
* @param string $html The XML or XHTML string
*
* @param int $strict Whether to use strict mode
*
* @return array
*
*/
function getTextBetweenTags($tag, $html, $strict=0)
{
/*** a new dom object ***/
$dom = new domDocument;
/*** load the html into the object ***/
if($strict==1)
{
$dom->loadXML($html);
}
else
{
$dom->loadHTML($html);
}
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the tag by its tag name ***/
$content = $dom->getElementsByTagname($tag);
/*** the array to return ***/
$out = array();
foreach ($content as $item)
{
/*** add node value to the out array ***/
$out[] = $item->nodeValue;
}
/*** return the results ***/
return $out;
}
?>
在这个例子中,如果使用普通的html,则无需提供第三个参数。 这允许处理无效的、不完整的html标签。缺少关闭的 标签,然而,使用dom和loadHtml可以允许这样的偏差。 这个例子仍然会解析html,并检索一个数组中所有文字之间的所有锚标签。 代码:
<?php $html = '<body>
<h1>Heading</h1>
jbxue.com
<p>paragraph here</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/code/9265" title="DirCMS内容管理系统6.0"><img
src="https://img.php.cn/upload/webcode/000/000/015/175850640594515.jpg" alt="DirCMS内容管理系统6.0" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/code/9265" title="DirCMS内容管理系统6.0">DirCMS内容管理系统6.0</a>
<p>DirCMS内容管理系统,是国内自主研发的一款功能强大而又不失小巧简洁的由PHP+Mysql架构的内容管理系统。DirCMS代码全部开源,便于使用者二次开发或定制;并采用简洁的模板标签技术,使制作模板更加容易,一般情况下,用DirCMS架构一个企业站只需半天时间即可,真正实现功能的简洁,实用,强大,灵活。可广泛应用于架构各类门户站,下载站,企业站,工作室等站点。</p>
</div>
<a href="/xiazai/code/9265" title="DirCMS内容管理系统6.0" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p>
<p>Paragraph with a LINK TO jbxue.com</p>
<p>This is a broken paragraph
';
$content = getTextBetweenTags('a', $html);
foreach( $content as $item )
{
echo $item.'<br>';
}
?>
</p>
在最后的这个例子中,使用两个自定义标签,应用于XML或XHTML文件。 第三个参数被设置为使用XML模式和解析的自定义标签。 代码:
<?php $xhtml = '<html>
<body>
<para>This is a paragraph</para>
<para>This is another paragraph</para>
</body>
';
$content2 = getTextBetweenTags('para', $xhtml, 1);
foreach( $content2 as $item )
{
echo $item.'<br>';
}
?>
|
0
0
相关文章
如何在 PayPal 支付后无需交易 ID 即可可靠获取交易详情
如何正确抓取动态渲染网页的标题(如AniList)
WordPress 动态过滤标签:基于已筛选文章获取关联标签列表
PHP 中安全提取 ISO 8601 时间字符串中的日期部分
如何在 PHP 中递归检测数组中具有子节点的嵌套父节点
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。
76
2026.03.11
本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。
38
2026.03.10
本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。
83
2026.03.09
本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。
97
2026.03.06
本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。
223
2026.03.05
本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。
458
2026.03.04
2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!
169
2026.03.04
本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。
246
2026.03.03
本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。
34
2026.03.03
热门下载
精品课程
最新文章

