删除除php中的外部javascript文件之外的所有本地javascript文件

时间:2010-10-12 06:05:46

标签: php regex

我正在编写一个PHP脚本,将本地javascript文件压缩成一个html页面。现在我想删除除外部javascript文件之外的本地引用。

例如,我有以下变量。

$my_domain = "mysite";
$base_url ="http://www.mysite.com"

我想删除除外部之外的所有本地javascript引用。本地javascript也包括子域。例如,http://www.mysite.com/script/jquery.jshttp://dev.mysite.com/scripts/test.js是本地javascript文件的示例。

我想为此使用正则表达式。

编辑: 格式为:

 <script src="http://www.mysite.com/jsfile.js"></script>

编辑2:  页面中的脚本如下:

<script type="text/javascript" src="http://localhost/test/example/Scripts/superfish/js/hoverIntent.js"></script>
<script type="text/javascript" src="http://localhost/test/example/Scripts/superfish/js/superfish.js"></script>

其中$baseURL="http://localhost/test/example";

目前尚未取代。

1 个答案:

答案 0 :(得分:0)

假设你的基本网址是 mysite.com ,这个正则表达式:

搜索:(<script\b[^[><]*\ssrc\s*=\s*["'])(?:http:\/\/)?(?:www.)?(?:\w+\.)?\bmysite\.com/?\b([^><"']*["'])

替换为:$1$2

将使您的网址引用(可以包含任意数量的域/子域),例如来自 http://www.mysite.com/jsfile.js 成为 jsfile.js

假设您要删除包含此类网址的每个SCRIPT标记(及其内容),请使用此正则表达式:

搜索:<script\b[^><]*\ssrc\s*=\s*[^><]*\bmysite\.com\b[^><]*>\s*<\/script>

替换为:没有

如果<script></script>之间可能包含任何文字,请改用此正则表达式:

搜索:<script\b[^><]*\ssrc\s*=\s*[^><]*\bmysite\.com\b[^><]*>.*?<\/script>

替换为:没有

所以

<?php
$ptn = "/<;script\b[^>;<;]*\ssrc\s*=\s*[^>;<;]*\bmysite\.com\b[^>;<;]*>;.*?<;\/script>;/";
$str = "<;script src="http://www.mysite.com/jsfile.js">;<;/script>;";
$rpltxt = "";
echo preg_replace($ptn, $rpltxt, $str);
?>