PHP 中的简单 BBparser 可让您替换标签之外的内容

2023-12-22

我正在尝试解析表示源代码的字符串,如下所示:

[code lang="html"]
  <div>stuff</div>
[/code]
<div>stuff</div>

正如你从我之前的 20 个问题中看到的,我尝试使用 PHP 的正则表达式函数来做到这一点,但是遇到了很多问题,特别是当字符串非常大时......

你们知道我可以用 PHP 编写的 BB 解析器类来代替正则表达式吗?

我需要它做的是:

  • 能够从内部转换所有内容[code]带有 html 实体的标签
  • 能够仅对外部内容运行某种过滤器(我的回调函数)[code] tags

谢谢

edit: 我最终使用了这个:

  • 全部转换<pre> and <code>[pre] 和 [code] 的标签:

    str_replace(array('<pre>', '</pre>', '<code>', '</code>'), array('[pre]', '[/pre]', '[code]', '[/code]'), $content);
    
  • 获取[code]..[/code]和[pre]...[/pre]之间的内容并进行html实体转换

    preg_replace_callback('/(.?)\[(pre|code)\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)/s', 'self::specialchars', $content);
    

    (我从 WordPress 短代码函数中窃取了这个模式:)

  • 将实体转换后的内容存储在临时数组变量中,并替换其中的内容$content具有唯一的ID

  • 我现在可以安全地运行我的过滤器$content,因为其中没有代码,只有 ID(此过滤器对整个文本执行 strip_tags 并转换诸如http://blabla.com到链接)

  • 替换其中的唯一 ID$content使用数组变量中转换后的代码块

你觉得可以吗?


HTML 净化器http://htmlpurifier.org/ http://htmlpurifier.org/

但您面临着与之前 20 个问题相同的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 中的简单 BBparser 可让您替换标签之外的内容 的相关文章

  • 验证数据库匹配中的 $_GET id 是否足够安全?

    我的网站上有 2 个页面 一个是 index php 索引页面列出了数据库中存在的所有帖子 另一个页面是 post php 当单击索引页面上的特定帖子时 帖子页面显示单个帖子 现在我用来列出 index php 上所有帖子的代码是 post
  • SVG 坐标与变换矩阵

    我想在矩形元素上实现像 svg edit 这样的功能 旋转矩形 调整大小 Drag 旋转 SVG 矩形效果很好 但是当我想调整矩形大小时 它就会出现问题 坐标不正确 我使用变换矩阵来旋转targetelement setAttribute
  • 如何在 Chrome 中实现抓取光标图标?

    我知道可以在 Chrome 中使用抓取光标图标 当然是在 Gmail 中 但我不知道如何在我的代码中实现它 我已经尝试过 在CSS中 body cursor grab body cursor webkit grab body cursor
  • Kohana_Exception [ 0 ]:需要有效的 cookie salt。请设置 Cookie::$salt

    我正在学习本教程 http kowsercse com 2011 09 04 kohana tutorial beginners http kowsercse com 2011 09 04 kohana tutorial beginners
  • 通过 HTML5 文件和 URL API 正确创建和提供 PDF Blob

    好吧 假设我有文档数据存储在某处 让我们任意取this pdf http www grida no climate ipcc tar wg1 pdf tar 01 pdf 问题 1 我想要做的是对此 URL 进行 AJAX 调用 因为我需要
  • 在原生 Android 应用程序中使用 WebView 整个布局有用吗?

    我目前正在开发一个原生 Android 应用程序 我的应用程序有很多活动 我要发展native安卓应用程序 但在某些情况下 我想使用webview整个布局只是一个网络视图 不是线性的或相对的或其他布局 只是一个网络视图 所有图像和其他内容都
  • 计算机AI算法写句子?

    我正在寻找有关处理文本句子或在创建在正常人类语言 例如英语 中有效的句子时遵循结构的算法的信息 我想知道这个领域是否有我可以学习或开始使用的项目 例如 如果我给一个程序一个名词 为其提供同义词库 相关单词 和词性 以便它理解每个单词在句子中
  • MySql 查询在选择中将 NULL 替换为空字符串

    如何用空字符串替换 select 中的 NULL 值 输出 NULL 值看起来不太专业 这是非常不寻常的 根据我的语法 我希望它能够工作 我希望能得到一个解释 为什么没有 select CASE prereq WHEN prereq IS
  • 为什么我的 onclick 事件自动触发

    加载页面时最初显示 Hello World 我希望它仅在单击按钮后显示 我知道我可以通过向按钮添加内联事件侦听器来做到这一点 我可以只用脚本编写所有这些代码吗
  • 当我尝试转发电子邮件时,时事通讯无法隐藏 Gmail 上的响应内容

    我正在尝试写一份时事通讯 但当我测试时 我无法隐藏响应式内容GMail On Outlook and Yahoo一切正常 但如果我尝试转发电子邮件 隐藏的内容就会可见 我测试使用 putsmail https putsmail com gt
  • 如何使用 CSS 将 div 置于表格中心?

    我正在尝试向我的网站之一添加幻灯片 整个页面布局在一个 HTML 表格中 我非常讨厌它并且没有选择 我想将我的幻灯片放在该特定列的中心 我的 CSS 如下所示 slideshow position relative slideshow IM
  • 转换 SVG 过滤器

    我正在尝试创建一个像 SVG 圆圈上的阴影这样的材质设计 我希望当您单击圆圈时 这个阴影能够以良好的过渡来增长 但目前我正在努力弄清楚是否可以为这种过渡设置动画 所以我希望有人能够提供帮助 我添加了一个到目前为止所得到的小例子 一个带有阴影
  • 正则表达式提取美国邮政编码,但不提取假代码

    使用 XML 包和 XPath 从网站上抓取地址 有时我只能得到一个嵌入了我想要的邮政编码的字符串 提取邮政编码很简单 但有时会显示其他五位数字的字符串 以下是 df 中问题的一些变体 zips lt data frame id seq 1
  • 禁用任何类型的浏览器窗口滚动?

    有没有办法禁用滚动 不仅仅是滚动条 还有浏览器窗口的全部功能 根据您对 Keit 的回答 您不想在打开灯箱时滚动处于活动状态 如果是这种情况 您可以使用以下 css 在打开灯箱的同时向正文添加一个类 这个解决方案的好处是它保留了滚动 空间
  • Python itertools groupby 中令人不安的奇怪行为/错误?

    我在用itertools groupby解析一个短的制表符分隔的文本文件 文本文件有几列 我想做的就是对具有特定值的所有条目进行分组x在特定的列中 下面的代码对名为的列执行此操作name2 寻找变量中的值x 我尝试使用以下方法来做到这一点c
  • 页面不会居中对齐

    我遇到了 CSS 问题 http www luukratief design nl dump parallax index html http www luukratief design nl dump parallax index htm
  • 如何获取本地主机系统的公共IP地址[重复]

    这个问题在这里已经有答案了 我已连接到局域网 我可以访问互联网 使用浏览器 我可以使用搜索 我的 IP 是什么 找到我的公共 IP 我想使用php获取公共IP 我正在我的中运行脚本localhostwamp服务器 I tried SERVE
  • 从 CodeIgniter 中的 URL 捕获哈希值 (#)

    我有一个看起来像的网址 mysite com transactions view 123456 效果很好 但是我的客户现在希望在 url 中包含 hashbang mysite com transactions view 123456 现在
  • 学说“没有命名的协会”

    将我添加到无法找出其学说映射出了什么问题的人列表中 我正在模拟国际象棋Game与一对多Halfmoves 有任何想法吗 DDL create table game game id int primary key create table h
  • html5 canvas 使用图像作为蒙版

    是否可以使用具有形状的图像作为整个画布或画布内图像的蒙版 我想将图像放置在画布中 并在图像上添加蒙版 然后将其另存为新图像 您可以使用 source in globalCompositeOperation 将黑白图像用作蒙版 首先 将蒙版图

随机推荐

  • 在 Phonegap 中加载 JSON?

    基本上我有一个位于服务器上的 php 脚本 它生成一个 JSON 文件 列出 mysql 数据库中的位置 我正在使用 jQuery Mobile 开发一个应用程序来显示这些地方 我的代码在 Chrome 和 Safari 中工作 但是当我将
  • 如何分别填充NaT和NaN值

    我的数据框同时包含 NaT 和 NaN 值 Date Time entry Entry Date Time exit Exit 0 2015 11 11 10 52 00 19 9900 2015 11 11 11 30 00 20 350
  • 无法访问 C++ std::set 中对象的非常量成员函数

    留言是我做的一堂课 我在主函数中有一组它们传递给 messageTimeOut 以及其他一些函数 在使用迭代器的 messageTimeOut 中 我循环遍历它们并访问不同的成员函数 但是 我只能访问迭代器指向的 Message 的 con
  • 为什么在方法或函数名称之前和之后使用 const 关键字?

    我的应用程序中有以下代码 为什么我们使用const返回类型和方法名称后面的关键字 const T data const return data const T get data const return data 意味着它将返回一个cons
  • pandas - groupby 多个值?

    我有一个数据框 其中包含按通话日期和持续时间记录的手机分钟使用情况 它看起来像这样 30 行示例 id user id call date duration 0 1000 93 1000 2018 12 27 8 52 1 1000 145
  • 如何保护 firebase Cloud Function HTTP 端点以仅允许经过 Firebase 身份验证的用户?

    借助新的 firebase 云功能 我决定将部分 HTTP 端点移至 firebase 一切都很好 但我有以下问题 我有两个由 HTTP 触发器 云函数 构建的端点 用于创建用户并返回自定义令牌的 API 端点 由 Firebase Adm
  • 删除一组具有特定值的变量中的随机观察子集

    假设我有一个数据框 我想在其中删除满足特定标准的随机观察样本 即整行 以此数据框为例 id var1 var2 AAAA 1 Car BBBB 2 Truck CCCC 1 Boat DDDD 2 Car EEEE 1 Truck FFFF
  • 为传单设置 SRID - Geodjango

    我的 Postgres 数据库中有 31277 投影的数据 无论如何 我正在使用 Leaflet 地图来向他们展示 Geodjango 现在 我的数据已移动到地图中的某个位置 因此我需要更改 Leaflet 地图的投影 在文档中 http
  • Heroku 计费测功机到底如何工作?

    我试图了解 Heroku 定价系统 好的 免费帐户每小时可获得 1000 dyno dyno hour 的确切含义是什么 这取决于什么 每秒请求数 用户数量 如果我想切换到非睡眠优惠 我必须为每个 dyno 支付 7 美元 那么 1000
  • 友元函数未在此范围内声明错误

    您好 我试图了解友元函数的范围 但出现 未在范围内声明 错误 这是我的代码 node h class Node public int id int a int b friend int add int int void itsMyLife
  • 在 Python 3 中使用 xlsxwriter 交替行颜色

    有人在Python3中使用xlsxwriter生成excel时实现了交替行颜色吗 data format workbook add format bg color FFC7CE worksheet write data row data c
  • vim 系统寄存器 * 和 + 不起作用

    echo has clipboard 返回 1 但每当我执行 yy or yy 那些寄存器中似乎什么也没有 如果我使用常规yy复制另一行文本 然后尝试使用从寄存器粘贴CONTROL V什么都没发生 如果我尝试 pvim 粘贴我使用常规复制的
  • Linux 的 Windows Beep() 等效项

    我正在Windows上试验Beep功能 include
  • Laravel 创建方法

    我正在尝试使用 Laravel 存储数组create method input Input all new media this gt media gt create input or input Input all new media M
  • 为输入字段注册自定义焦点事件处理程序的最佳实践

    遗憾的是 我没有找到任何焦点事件sap m Input or sap m TextArea我可以在 XML 视图中注册处理程序 您的最佳实践是什么 例如如果你有近 100 个字段并且其中大部分应该处理focus 事件 以便自动选择输入字段中
  • 转换为具有指定小数位数的小数

    有没有办法将一个数字转换为具有指定小数位数的小数 我试过 SELECT CAST NumericField AS NUMERIC 15 DecimalPlaces AS NumericField 但这没有用 EDIT 我写错了NUMBER代
  • Chrome 开发者工具 - (索引)样式表在哪里?

    我正在修改一个基于 WordPress 的网站的主题 新主题再具体一点 虽然我改变了主题选项 style css文件和custom css文件 我无法更改链接的颜色 然后我使用 Chrome 的开发者工具来检查我的规则在哪里被覆盖 最重要的
  • 如何在Web Core API中调试启动?

    我有一个使用 Web Core API 的 MVC 网站 在进行了微小的更改和部署后 我意外地收到了错误 响应状态代码不表示成功 500 内部服务器错误 所以我启用了 Web Core API 的日志文件 请参阅https learn mi
  • ASP.NET MVC 应用程序中的数据操作和业务逻辑代码应该放在哪里?

    观看了 Rob Conery 的 Kona 应用程序的示例后 我发现他在 IoC 中使用了两个东西 ISession 其中有数据层代码和服务 其中有一些我们在操作数据存储中的数据时需要执行的附加业务逻辑 例如 我们可能不仅向数据库添加一条记
  • PHP 中的简单 BBparser 可让您替换标签之外的内容

    我正在尝试解析表示源代码的字符串 如下所示 code lang html lt div gt stuff lt div gt code div stuff div 正如你从我之前的 20 个问题中看到的 我尝试使用 PHP 的正则表达式函数