繁体   English   中英

使用php删除特定的html标签

[英]remove specific html tags using php

由于我不想使用php的stip_tags函数,而不是想将<script> and </script>替换为空字符串,因此输出应为alert(1)。

输入:- <script>alert(1)</script>

输出:-alert(1)

如何实现。

使用简单的替换:

$string = str_replace(array("<script>","</script>"), "");

或正则表达式:

$string = preg_replace("/<script.*?>(.*)?<\/script>/im","$1",$string); 
echo strip_tags($text, '<p><strong><a>');

只需在第二个参数中说明您不想删除的内容即可

我想您想阻止XSS攻击,您不应该担心script标签,否则有人可能会这样利用它: <a href="http://anywhere.com" onClick="alert(1);">test</a> (尽管这是一种非常基本的方式)。

如果只希望过滤没有属性的script标签,请执行以下操作:

str_replace(array('<script>', '</script>'), array('', ''), $str);

您应该使用Regex改进它; 使用preg_match's和preg_replaces(或仅使用preg_replaces),您可以使用其属性匹配和/或替换script标签。 甚至对XSS都有更多保护。

编辑:甚至是正则表达式,例如/<script>(.+)<\\/script>/然后将方括号之间的内容存储到变量中,然后打印出来。

试试这个同志

$strn = "<script>alert(1)</script>";
$ptrn = "=^<script>(.*)</script>$=i";

echo preg_match( $ptrn, $strn, $mtchs ); // 0 means fail to matche and 1 means matches was found!
var_dump( $mtchs );

结果是

1array(2) { 
    [0]=> string(25) "" 
    [1]=> string(8) "alert(1)" 
} 

简单的方法是使用StripTags

转到StripTags github并通过composer下载或安装。 此类有一个only您执行此操作的方法!

use Mimrahe\StripTags\Stripper;
$stripper = new Stripper();
$stripper->text('<a href="#">link</a><p>some paragraph</a>');
$stripper->only(['p']);
echo $stripper->strip(); // prints '<a href="#">link</a>some paragraph'

您始终可以将strip_tags()与包含允许标签的第二个参数一起使用。

或者,使用...

preg_replace('/<script>(.*)</script>/i', '$1', $input);

注意,未经测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM