Php 正则表达式:替换谷歌分析代码 var gaJsHost=((“https:==document.location.protocol)?”https://ssl." : "http://www."); write(unescape(“%3Cscript src=”+gaJsHost+“google analytics.com/ga.js”type='text/javascript'%3E%3C/script%3E”); 尝试 { var pageTracker=_gat._getTracker(“xx-xxxxxxxx-x”); pageTracker._setDomainName(“.com”); 页面跟踪器。_trackPageview(); }捕获(错误){}
我有这个旧的谷歌分析代码在多个文件。我需要用Php 正则表达式:替换谷歌分析代码 var gaJsHost=((“https:==document.location.protocol)?”https://ssl." : "http://www."); write(unescape(“%3Cscript src=”+gaJsHost+“google analytics.com/ga.js”type='text/javascript'%3E%3C/script%3E”); 尝试 { var pageTracker=_gat._getTracker(“xx-xxxxxxxx-x”); pageTracker._setDomainName(“.com”); 页面跟踪器。_trackPageview(); }捕获(错误){},php,regex,Php,Regex,我有这个旧的谷歌分析代码在多个文件。我需要用替换上面的整个代码 我正在使用php,这是我的正则表达式:/.*/它不起作用,存在一个问题。您可以尝试将s标志添加到您的正则表达式中,修饰符还启用捕获新行: <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(u
替换上面的整个代码
我正在使用php,这是我的正则表达式:
/.*/
它不起作用,存在一个问题。您可以尝试将s
标志添加到您的正则表达式中,修饰符还启用
捕获新行:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try
{
var pageTracker = _gat._getTracker("xx-xxxxxxxx-x");
pageTracker._setDomainName(".com");
pageTracker._trackPageview();
} catch (err) { }
</script>
<script src='bla.com/gaAddons.js' type='text/javascript'></script>
/.*/s
不过,在这种情况下,您最好使用HTML解析器而不是正则表达式。谷歌分析代码每次都是一样的吗?如果您决定使用解析&
xpath
路径,这将是要删除的节点的xpath://脚本[contains(string(),“gaJsHost”)]|//script[contains(string(),“_getTracker”)]|//脚本[@src=“bla.com/gaAddons.js”]
,但我厌倦了提倡这种优于regex的方法…@Wrikken如果文档格式不好,这可能会失败…(这是regex在这里获胜的唯一原因):)可能是这样,但是机会很小,许多解析器可以从加载文档的形式的小错误中恢复,因此原始文档的问题将非常严重。我意识到在发布的代码上有一些javascript。我对其进行了一些修改,但它不起作用/\/s+var gaJsHost+/s@kenpeter嗯这就是为什么在你的情况下使用正则表达式可能不是最安全的方法…你最好用DOM或一些HTML解析器替换节点…因为使用正则表达式很难同时具有足够的通用性和足够的安全性(即,在每种情况下删除好的东西,只删除好的东西)…实际上,在您的示例中,/.*/s
完成了这项工作,但它实际上将匹配最大的一对script
标记以及介于两者之间的所有内容(当然,不考虑任何嵌套结构,即正则表达式和仅正则表达式)
/<script.*>.*<script src='.+gaAddons.js' type='.+'><\/script>/s