Php 移除<;脚本>;使用preg_替换的标签

Php 移除<;脚本>;使用preg_替换的标签,php,regex,Php,Regex,我正在筛选字符串(从文本文件中提取),并使用preg_replace删除所有和标记。出于某种原因,它删除了实际的文本“script”,但保留了and。我曾尝试在/

我正在筛选字符串(从文本文件中提取),并使用preg_replace删除所有和标记。出于某种原因,它删除了实际的文本“script”,但保留了and。我曾尝试在/<中进行子绑定(尝试将其视为文字),但这只会产生错误。我如何让它也移除支架?输入为
Text
代码如下:

$file = file_get_contents($directory . "original-" . $name);
$file = htmlentities($file);
$file = preg_replace('<script>', '', $file);
$file = preg_replace('<\script>', '', $file);
$file=file\u获取内容($directory..original-”$name);
$file=htmlentities($file);
$file=preg_replace(“”,,$file);
$file=preg_replace(“”,,$file);
以下是输出:

  <>TEXT</>
文本
答案是

$html = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $html);
$html=preg#u replace(“#(.*?)#is',”$html);

但是您可能想看看
strip_标记
函数

您在
preg.*
函数中使用的模式在这之前和之后都必须有某种类型的a。PHP允许许多不同的分隔符,因此它将尖括号视为regexp分隔符,而不是模式的一部分。我通常使用
{
}
作为分隔符,许多其他人使用斜杠、散列符号、方括号和括号。尖括号也可以用作分隔符,这就是您的模式失败的原因

您可以通过在模式周围添加一些分隔符来解决此问题,例如:

$file = preg_replace('/<script>/', '', $file);

另一方面,也许我对你的问题读得太多了,我重复一遍,你不应该

您缺少delimeters和escape,并且
htmlentities
正在更改您的字符串。它可能不包含您期望的内容。您能告诉我它应该是什么样子吗?正则表达式真的很新。@mattegener只需在替换脚本标记后放置
htmlentities
行即可。还有它的正斜杠
/
不是\backslash@RahilWazir我试过了,但结果与我以前的尝试相同。虽然这就是原因,但您只需陈述答案即可。你没有解释为什么这是答案。这个问题在这个网站上已经解释了一百万次,每隔一天就会出现一次。2.这很可能不应该用regexp解决,而应该使用strip_标记。一行话说
PHP支持多分隔符,字符<>是一系列受支持的分隔符。
就足够了。你不会死,你会有一个更好的答案。没有代码示例,你的答案是不完整的。但我同意最后一句话。完全是!
<script type="text/javascript">...</script>
<script src="..." />