0

我正在尝试实现 head.js 以异步加载我的所有 js 文件。

为此,应按以下方式加载 javascript 文件:

<script>head.js("file1.js")</script>
<script>head.js("file2.js")</script>
<script>head.js("file3.js")</script>

如果我的文件的样式正常,例如:

<script src="file1.js"></script>
<script src="file2.js"></script>
<script src="file3.js"></script>

我将能够使用这样的东西来获得我想要的结果:

$pattern = '~\<script src=(.*?)\>~';
$replacement = '<script>head.js($1)>';
$html = preg_replace($pattern,$replacement,$html);

但是,目前我的安装中有一个缩小器,它将 javascript 文件组合成以下样式:

<script src="http://mysite.com/js/file1.js,/js/file2.js,/js/file3.js"></script>

我对 reg 表达式感到很糟糕......有人能帮我解决一个可以将其转换为 head.js 格式的替换模式吗?

差点忘了……文件的数量不限于三个,会更多,但数量不详。

4

1 回答 1

2
$pattern = '!(\w+\.)+js!';
$html = '<script src="http://mysite.com/js/file1.js,/js/file2.js,/js/file3.js"></script>';
preg_match_all($pattern,$html, $match);
print_r($match);

输出:

Array ( [0] => Array ( [0] => file1.js [1] => file2.js [2] => file3.js ) ) 

你可以像这样得到你的第一个文件:print $match[0][0];,第二个print $match[0][1];等等。

于 2012-07-16T08:56:15.360 回答