我正在尝试实现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);
但是目前我的安装上有一个minifier,它将javascript文件组合成以下样式:
<script src="http://mysite.com/js/file1.js,/js/file2.js,/js/file3.js"></script>
我对reg表达式很糟糕...是否有人能够帮助我使用替换模式将其转换为head.js格式?
几乎忘记了...文件的数量不限于三个,它会更多,但数量是未指定的。
答案 0 :(得分: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];
,依此类推。