在多个简单字符串上使用Pregreplace


Using Pregreplace on Multiple Simple Strings

我正在尝试实现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];等等。