首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >删除<script>中的所有内容和HTML的CDATA

删除<script>中的所有内容和HTML的CDATA
EN

Stack Overflow用户
提问于 2015-11-18 06:10:35
回答 1查看 892关注 0票数 3

我应该删除从通用网站网址的file_get_contents中获取的PHP中标签之间的所有内容(和标记)。我使用的是RegEx表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $string);

它工作得很好,但是我的问题是,如果一个脚本包含CDATA标签,它就不能工作。字符串的一个例子是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script type='text/javascript'>
/* <![CDATA[ */
var variable = {"ajax":"....."}
/* ]]> */
</script>

我想问题在于那些"/“和"/”标签。

我已经在google和Stack溢出上搜索过了,但是毫无疑问,使用特定类型的cdata标记(使用/*和*/),所以什么都不起作用。

有什么建议吗?

编辑:回答说,我现在使用的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach($dom->getElementsByTagName('script') as $scripttag){
$scripttag->parentNode->removeChild($scripttag);
}

然后我有:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach($dom->getElementsByTagName('ins') as $string) {
    $string2 .= $string->nodeValue;
    $string2 .= ' ';
}

但这将返回一个带有脚本标记的$string2。

编辑2(解决了):在的帮助下,我发现使用解决了问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$xpath = new DOMXpath($dom);
foreach ($xpath->query('//script') as $node) {
   $node->parentNode->removeChild($node);
}

这也会移除另一个标记中的脚本标记,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ins><script>First JS</script></ins>
<ins>Hello</ins>
<script>Second JS</script>

威尔输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hello

谢谢大家的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-18 06:16:40

不要为此使用regex,请使用适当的html解析器,如domdocument:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
//removing elements from a nodelist resets the internal pointer, so traverse backwards:
$elements = $dom->getElementsByTagName('script');
$count = $elements->length;
while(--$count){
    $elements->item($count)->parentNode->removeChild($elements->item($count));
}

//you can do further dom manipulation here if needed
$insertContents='';
foreach($dom->getElementsByTagName('ins') as $insert){
    $insertContents .= $insert->nodeValue . ' ';
}
//if you need the complete html at all:
$html = $dom->saveHTML();
//your desired string:
echo $insertContents;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33782262

复制
相关文章
nodejs执行命令行
答:每种语言都有自己的优势,互相结合起来各取所长程序 执行 起来效率更高或者说哪种实现方式较简单就用哪个, nodejs 是利用子进程来调用系统 命令 或者文件,文档见http:// nodejs .org/api/child_process.html, NodeJS 子进程提供了与系统交互的重要接口,其主要API有: 标准输入、标准输出及标准错误输出的接口。 NodeJS 子进程提供了与系统交互的重要接口,其主要 API...
Power
2023/05/25
6980
nodejs执行命令行
golang exec 命令执行
Cmd 结构体 命令的操作通过 Cmd结构体实现 type Cmd struct { // 命令 Path string // 命令参数 Args []string // 进程执行环境 Env []string // 命令执行目录, 默认当前目录 Dir string // 命令输入 Stdin io.Reader // 命令输出 Stdout
copy_left
2019/08/23
2.2K0
实例详解sed命令行
sed是一种流编辑器,以行为单位进行文本处理,可以将数据行进行替换、删除、新增、选取等操作。
章鱼喵
2019/07/04
5720
玩转 Nodejs 命令行
在做 cli 工具的时候,非常需要命令行相关的第三方库。一个比较稳健成熟的命令行应该考虑以下 4 种需求:
心谭博客
2020/04/21
9950
命令行工具:sed流式编辑
sed 简介 sed表示stream editor,流式编辑,把文件按行读进来,做处理。做替换处理text replacement ,或者删除操作的时候特别有用。 基本的命令模式sed [options] commands [file-to-edit]。 其中commands是传给sed的命令,也是最核心的; commands的模式为[addr]X[options],其中addr指定是对哪些行做操作,比如第1行,或者3-100行,也可以通过正则表达式确定;其中X是一个字符的sed命令,常见的有p打印,d删
用户2183996
2018/06/21
9670
nodejs 运行命令行
答:对于 nodeJS 项目的运行,只需要安装一个 node的环境就可以了,不需要其他的配置。 使用 cmd 命令,打开 window 窗口,输入 node -v ,如果运行的结果是 nodeJS的一个版本,说明环境就已经OK了。
Power
2023/05/25
1.4K0
nodejs 运行命令行
sed命令工作原理及命令备忘
sed是一个非交互式的流编辑器(stream editor)。所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出;而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然后对该行进行指定的处理,并将结果输出到屏幕(除非取消了屏幕输出又没有显式地使用打印命令),接着读入下一行。整个文件像流水一样被逐行处理然后逐行输出。 工作中经常会使用sed命令对文件进行各种操作,之前一直对它的工作原理不是很了解,只不过在网上抄一些命令完成操作,有时遇到了问题,就问一问身边的“脚本小王
jeremyxu
2018/05/10
1K0
redhat6.8 从命令行安装图形化界面,,,从命令行进入图形化界面
进入到虚拟机里面之后: 执行 vim /etc/sysconfig/network-scripts/ifcfg-eth0
一写代码就开心
2022/05/09
1.9K0
redhat6.8 从命令行安装图形化界面,,,从命令行进入图形化界面
从命令行查看所有已安装的Linux内核
Linux内核是GNU/Linux操作系统的核心组件。它是一个免费、开源、庞大、模块化、多任务的类Unix的操作系统内核。它最初是由Linus Torvalds在1991年为他的i386 PC创造的。
CloudBest
2021/04/20
13.4K0
从命令行查看所有已安装的Linux内核
nodejs 执行cmd命令
答:所有的编程语言都有 执行 系统 命令 的接口, nodejs 也不例外,比如删除调用 shell命令 ,将一个HTML文件转换成PDF文件,如果是PHP,很简单:`prince -v builds/pdf/book.html -o builds/pdf/book.pdf`在PHP里系统 命令 可以放在反单引号 (`)里 执行 。 如果你要是使用 nodejs ,你需要调用引用var exec = require ('child_p...
Power
2023/05/25
1.6K0
nodejs 执行cmd命令
.Net Core从命令行读取配置文件
最近在学习博客园腾飞(jesse)的.Net Core视频教程,收益匪浅,在此作推荐 : http://video.jessetalk.cn/ 言归正传,.Net Core应用程序中如何通过命令行读取
码农阿宇
2018/04/18
9170
.Net Core从命令行读取配置文件
从命令行使用 wget 调试网页错误
有时在管理一个网站时,事情会被搞得一团糟。你可能会删除一些陈旧的内容,用重定向到其他页面来代替。后来,在做了其他改动后,你发现一些网页变得完全无法访问了。你可能会在浏览器中看到一个错误:“该页面没有正确重定向”,并建议你检查你的 cookie。
用户9239730
2021/11/30
4140
【猫狗数据集】从命令行接收参数
链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw 提取码:2xq4
西西嘛呦
2020/08/26
4560
【猫狗数据集】从命令行接收参数
如何从命令行关闭或重启远程 Linux 主机?
在远程管理 Linux 主机时,有时需要通过命令行关闭或重启主机。本文将详细介绍如何使用命令行在远程 Linux 主机上执行关闭或重启操作,以确保安全和便捷地管理远程系统。
网络技术联盟站
2023/06/14
2.6K0
如何从命令行关闭或重启远程 Linux 主机?
docker exec执行多个命令详解 原
docker exec命令能够在运行着的容器中执行命令。docker exec命令的使用格式:
拓荒者
2019/03/11
6.5K0
php 执行 命令行命令
PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。参考:http://www.jb51.net/article/19618.htm
lin_zone
2018/08/15
1.5K0
Python开发---使用subprocess从命令行程序获取数据
发现一个简单的解决不同语言开发的程序之间调用对方函数获取数据的方法,就是使用命令行作为数据流的接口。
MiaoGIS
2020/11/04
7910
Python开发---使用subprocess从命令行程序获取数据
xcodebuild:从命令行部署 iOS 应用程序
作者:Shashikant Jagtap 时间:2017 年 6 月 4 日 原文:https://medium.com/xcblog/xcodebuild-deploy-ios-app-from-command-line-c6defff0d8b8
iOSDevLog
2019/05/09
2.5K0
xcodebuild:从命令行部署 iOS 应用程序
java之从命令行获取数据的三种方式
第一种:利用Scanner对象 import java.util.Scanner; public class TestInputOuput { public static void main(String[] args) { System.out.println("请输入:"); Scanner inp = new Scanner(System.in); String str = inp.next(); System.out.prin
西西嘛呦
2020/08/26
4180
java之从命令行获取数据的三种方式
PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。 在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下:
全栈程序员站长
2022/07/08
1.4K0

相似问题

使用fstream从二进制文件中读取c++字符串

43

使用fstream读取文件的C++

10

如何使用fstream (C++)从文件中读取特定行

20

Fstream从文件读取并循环C++

15

使用fstream从C++中的*.txt文件中读取数字

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文