我正在尝试实现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格式吗?
差点忘了。。。文件数量不限于三个,会更多,但数量不详。
$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];
等等。