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

时间:2012-07-16 08:43:50

标签: php preg-replace head.js

我正在尝试实现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格式?

几乎忘记了...文件的数量不限于三个,它会更多,但数量是未指定的。

1 个答案:

答案 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];,依此类推。