全球主机交流论坛

标题: 请问有什么方法用php代码过滤某个html标签吗 [打印本页]

作者: okfree    时间: 2023-11-19 13:02
标题: 请问有什么方法用php代码过滤某个html标签吗
比如我想过滤</head>这个标签,我不去手动删除</head>让他不在页面执行输出,有什么php代码可以解决吗?

作者: 雪丫鬟    时间: 2023-11-19 13:02
这个问题很深奥
作者: Salta    时间: 2023-11-19 13:03
不去遍历删除那就格式化输出
作者: okfree    时间: 2023-11-19 13:05
Salta 发表于 2023-11-19 13:03
不去遍历删除那就格式化输出

格式化输出是啥意思
作者: gcpyyds    时间: 2023-11-19 13:08
太深奥了,我不会
作者: xmm    时间: 2023-11-19 13:12
本帖最后由 xmm 于 2023-11-19 13:56 编辑

自己的站,你要修改部分元素显示效果,不删就 注释
别人的站,你去观看想屏蔽元素的话,用油猴脚本

作者: jekyll    时间: 2023-11-19 13:12
php也要输出js实现,不如直接js
作者: okfree    时间: 2023-11-19 13:55
jekyll 发表于 2023-11-19 13:12
php也要输出js实现,不如直接js

js代码可以解决吗
作者: wcn    时间: 2023-11-19 14:00
不明白你的意图
作者: liugogal    时间: 2023-11-19 14:03
https://www.php.net/manual/en/function.strip-tags.php
作者: jekyll    时间: 2023-11-19 14:31
okfree 发表于 2023-11-19 13:55
js代码可以解决吗

当然可以,所有的DOM都可以通过js修改。
而PHP运行在HTML之前,所以无法直接实现保留某个标签又禁用它的实际效果。
作者: karson    时间: 2023-11-19 14:34
正则表达式匹配替换成空字符串
作者: okfree    时间: 2023-11-19 14:37
jekyll 发表于 2023-11-19 14:31
当然可以,所有的DOM都可以通过js修改。
而PHP运行在HTML之前,所以无法直接实现保留某个标签又禁用它的 ...

求方法
作者: okfree    时间: 2023-11-19 14:43
karson 发表于 2023-11-19 14:34
正则表达式匹配替换成空字符串

具体代码和方法 谢谢
作者: karson    时间: 2023-11-19 14:47
okfree 发表于 2023-11-19 14:43
具体代码和方法 谢谢

看你的html标签是什么东西了
如果html标签本来就是字符串`echo`出来的,直接正则表达式`preg_replace`过滤它就好了

如果你说的html标签其实嵌入在php代码本身,那就有点野了
你可以先将这个php文件读取为字符串
然后正则替换
最后用`eval`函数将这坨字符串作为php代码执行

不过这相当于执行前临时改源码,就很不优雅了  除非你真的需要这么做吧
作者: okfree    时间: 2023-11-19 14:54
karson 发表于 2023-11-19 14:47
看你的html标签是什么东西了
如果html标签本来就是字符串`echo`出来的,直接正则表达式`preg_replace`过 ...

正常html输出内容
屏蔽过滤</head>标签
就屏蔽这个标签
作者: karson    时间: 2023-11-19 14:58
okfree 发表于 2023-11-19 14:54
正常html输出内容
屏蔽过滤标签
就屏蔽这个标签

重点在于这个html输出内容是哪里出来的=,=

不过看你的样子,你的意思是现在有一段php代码,你无法更改,但你希望修改它输出的内容,是不是这个意思?
作者: okfree    时间: 2023-11-19 15:12
karson 发表于 2023-11-19 14:58
重点在于这个html输出内容是哪里出来的=,=

不过看你的样子,你的意思是现在有一段php代码,你无法更改 ...

我只过滤</head>标签
中间内容不过滤<head>标签不过滤
就是相当于删除了</head>标签
作者: karson    时间: 2023-11-19 15:27
本帖最后由 karson 于 2023-11-19 15:29 编辑
okfree 发表于 2023-11-19 15:12
我只过滤标签
中间内容不过滤标签不过滤
就是相当于删除了标签

  1. <?php
  2. function filter_head($str)
  3. {
  4.   return str_replace("</head>", "", $str);
  5. }
  6. // 目标是字符串
  7. echo filter_head("<head>abc</head>");
  8. ?>


  9. <?php // 目标是php代码,包括字面tag、文件输出、函数输出等你无法控制的部分 ?>
  10. <?php ob_start('filter_head'); ?>
  11. <head>abc</head>
  12. <?php ob_end_flush(); ?>

  13. <?php // 其它内容 ?>
复制代码

作者: 我心飞呀飞    时间: 2023-11-19 15:34
karson 发表于 2023-11-19 15:27

我觉得他说的是php里面的html,就是懒得一个一个文件去删
作者: okfree    时间: 2023-11-19 15:38
karson 发表于 2023-11-19 15:27

非常感谢 我试试
作者: okfree    时间: 2023-11-19 15:48
我心飞呀飞 发表于 2023-11-19 15:34
我觉得他说的是php里面的html,就是懒得一个一个文件去删

是的 很多页面都有</head>标签
我只想过滤这个标签<head>标签可以保留 两个标签中间代码保存
只过滤结束的</head>标签
作者: okfree    时间: 2023-11-19 15:52
karson 发表于 2023-11-19 15:27

是的 很多页面都有</head>标签
我只想过滤这个标签<head>标签可以保留 两个标签中间代码保存
只过滤结束的</head>标签
php程序有单独的头部和尾部文件 有什么代码加到头部可以实现吗
你发那个我试了不行
作者: 双子小虾    时间: 2023-11-19 15:52
直接js不好吗
作者: karson    时间: 2023-11-19 15:58
okfree 发表于 2023-11-19 15:52
是的 很多页面都有标签
我只想过滤这个标签标签可以保留 两个标签中间代码保存
只过滤结束的标签

你试试将
`<?php ob_start('filter_head'); ?>`放到头部文件
`<?php ob_end_flush(); ?>`放到尾部文件

这个函数组合其实是将中间的输出全部作为字符串记录到缓存区,并在退出该部分后调用`filter_head`函数,然后再输出`filter_head`返回的内容。
作者: okfree    时间: 2023-11-19 15:58
双子小虾 发表于 2023-11-19 15:52
直接js不好吗

js可以在<head>之前输出 防止</head>结束代码显示吗
我只想去除多个页面</head>结束标签
<head>开始标签和</head>之前内容都保留
只删除过滤</head>标签
谢谢
作者: okfree    时间: 2023-11-19 16:02
karson 发表于 2023-11-19 15:58
你试试将
``放到头部文件
``放到尾部文件

非常感谢大佬的耐心回复
但我测试了 不行哈
谢谢
作者: 我心飞呀飞    时间: 2023-11-19 16:25
其实你只需要一个IDE工具,整个项目搜索、替换关键字

我用得最多是二开别人的项目,一个方法不知道被写在哪里了,全局搜索。
作者: 莉妮耶    时间: 2023-11-19 16:28
确实没看懂楼主说什么

是拿的别人的代码,里面有多余的</head>,还是数据库里面多存了 /head,还是哪里代码写错了会多产生几个 /head
作者: karson    时间: 2023-11-19 16:36
okfree 发表于 2023-11-19 16:02
非常感谢大佬的耐心回复
但我测试了 不行哈
谢谢

https://replit.com/@mkr67n/OutputFilterTest
作者: okfree    时间: 2023-11-19 16:54
karson 发表于 2023-11-19 16:36
https://replit.com/@mkr67n/OutputFilterTest

这个OK
谢谢大佬
作者: 胖虎_    时间: 2023-11-19 18:33
可以参考下面方法,去过滤一下html标签。



使用htmlspecialchars()函数进行了HTML实体转换。
使用nl2br()函数将内容中的换行符转换为HTML的<br>标签。
作者: 血仍未冷    时间: 2023-11-20 00:04
直接用内置的strip_tags($str, 'head')不就行了吗




欢迎光临 全球主机交流论坛 (https://91ai.net/) Powered by Discuz! X3.4