使用PHP查找并删除一些javascript标记,但留下另一个标记

时间:2016-01-17 02:37:30

标签: javascript php regex preg-replace str-replace

我有一些像这样的googletag:

<script type='text/javascript'>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
(function() {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
</script>

<script type='text/javascript'>
googletag.cmd.push(function() {
  googletag.defineSlot('/6176201/Opera_120x600', [120, 600], 'div-gpt-ad-6176201-opera_120x600').addService(googletag.pubads());
  googletag.defineSlot('/6176201/Opera_300x250', [300, 250], 'div-gpt-ad-6176201-opera_300x250').addService(googletag.pubads());
  googletag.defineSlot('/6176201/Opera_728x90', [728, 90], 'div-gpt-ad-6176201-opera_728x90').addService(googletag.pubads());
  googletag.defineSlot('/6176201/Contextuals_Operaweb', [557, 30], 'div-gpt-ad-6176201-contextuals_operaweb').addService(googletag.pubads());
  googletag.pubads().collapseEmptyDivs();
  googletag.pubads().enableSingleRequest();
  googletag.enableServices();
});
</script>

<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-6176201-opera_728x90'); });
</script>

<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-6176201-opera_120x600'); });
</script>

<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-6176201-opera_300x250'); });
</script>

它随机放在html代码中,我想查找并删除它,但不要触摸谷歌分析等其他脚本标签。只需谷歌搜索并查看大量答案但仍然不知道怎么做。请帮忙。

2 个答案:

答案 0 :(得分:0)

试试这个正则表达式:

/<script type='text\/javascript'(?:(?!<\/?script).\n)+?(\n*.*?)*?(googletag)(\n*.*?)*(?:(?!<\/?script>))*?<\/script>/gi

Test it online

答案 1 :(得分:-1)

如果您的每个googletag出现了独占脚本标记,我建议使用preg_replace这种模式:

%<script>(.*)(googletag)(.*)</script>%

这将匹配任何<script>...</script>标记内至少发生一次googletag,并且不应触及 Google Analytics 代码。

我将默认分隔符/更改为%,以便在标记结束时使用斜杠而不会出现问题。只需使用preg_replace

preg_replace(pattern, "", $htmldoc);