从字符串中删除javascript语法

时间:2013-05-18 01:23:57

标签: php javascript jquery

我正在尝试索引我的网站内容,因为<body></body>中有一些javascript,它会存储内容。

它实际上将所有内容都放在<body></body>之间,但我使用PHP的strip_tags来删除HTML标记。

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

如何删除javascript语法?

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

  

如果观看者不这样做,将暂停观看稍后添加到私有视频   有权访问,但播放列表备注是公开可见的。返回目录   添加到播放列表:如果观看者没有,则会跳过私有视频   有权访问,但播放列表备注是公开可见的。添加一个可选项   note150添加备注保存备注...注意添加到:添加备注时出错:   单击以添加新注释if(window.ytcsi){ytcsi.tick(“js_head”);}   yt.pubsub.subscribe( '初始化',   yt.www.brandedpage.channels4init.overviewTabInit);   yt.pubsub.subscribe( '处置',   yt.www.brandedpage.channels4init.overviewTabDispose);   yt.setAjaxToken( 'c4_shelves_ajax',   “0qjmgZRNi5AAlV5LrkVIKyY1_VZ8MTM2ODkyNTgzM0AxMzY4ODM5NDMz”);“

我怎样才能得到它只是

  

如果观看者不这样做,将暂停观看稍后添加到私有视频   有权访问,但播放列表备注是公开可见的。返回目录   添加到播放列表:如果观看者没有,则会跳过私有视频   有权访问,但播放列表备注是公开可见的。添加一个可选项   note150添加备注保存备注...注意添加到:添加备注时出错:   点击添加新笔记“

1 个答案:

答案 0 :(得分: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);