0

我正在尝试为我的网站的内容编制索引,并且由于里面有一些 javascript <body></body>,它也存储了内容。

它实际上得到了 . 之间的所有内容<body></body>,但我使用 PHP 的 strip_tags 来删除 HTML 标记。

它删除了<script>标签,因为它们是 HTML 标签,但 javascript 语法仍然存在。

如何删除 javascript 语法?

以下是其中包含 javascript 语法的内容示例:

“如果观看者无权访问,将跳过稍后观看添加到私人视频,但播放列表注释是公开可见的。返回列表已添加到播放列表:如果观看者无权访问,将跳过私人视频,但播放列表注释是公开的可见。添加可选注释150 添加注释正在保存注释... 注释添加到:添加注释时出错:单击以添加新注释 if (window.ytcsi) {ytcsi.tick("js_head");} yt.pubsub.subscribe( 'init', yt.www.brandpage.channels4init.overviewTabInit); yt.pubsub.subscribe('dispose', yt.www.brandpage.channels4init.overviewTabDispose); yt.setAjaxToken('c4_shelves_ajax', "0qjmgZRNi5AAlV5LrkVIKyY1_VZ8MTM2ODkyNTgzM0AxMzY4ODMz5");

我怎样才能得到它,使它只是

“如果观看者无权访问,将跳过稍后观看添加到私人视频,但播放列表注释是公开可见的。返回列表已添加到播放列表:如果观看者无权访问,将跳过私人视频,但播放列表注释是公开的可见。添加可选注释150 添加注释正在保存注释... 注释添加到:添加注释时出错:单击以添加新注释”

4

1 回答 1

2

您可以先从文本中删除script标签及其内容,然后strip_tags在结果上运行

可以通过多种方式删除脚本标签,其中之一是正则表达式:

$pattern = '/\<script.*\<\/script\>/iU'; //notice the U flag - it is important here
$text = preg_replace($pattern, '', $text);
$text = strip_tags($text);

另一种方式(不使用 REGEX 但不太优雅):

while(($pos = stripos($text,"<script"))!==false){
    $end_pos = stripos($text,"</script>");
    $start = substr($text, 0, $pos);
    $end = substr($text, $end_pos+strlen("</script>"));
    $text = $start.$end;
}
$text = strip_tags($text);
于 2013-05-18T01:33:18.510 回答