2012-07-16 33 views
0

我想實現head.js異步加載我所有的js文件。在多個簡單字符串上使用Pregreplace

要做到這一點的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); 

但是此刻我有一個縮小器在我的ins tallation結合的JavaScript文件到以下樣式:

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

我不善於用reg表達式中......會有人能幫助我,將工作轉換成head.js格式的替換模式?

差不多忘了......文件的數量不限於三個,它會更多,但數量不詳。

回答

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];等等。

+1

這是一個可愛的模式! – Dale 2012-07-16 08:59:09

+0

我真的很喜歡那樣,但不幸的是它無法應付多個「。」。在一個文件名,例如jquery.min.js返回min.js – 2012-07-17 07:38:36

+0

我編輯了答案,現在它可以應對:jquery.min.js jquery.min.max.js jquery.js – Alex 2012-07-17 10:37:51

相關問題