0

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形式に変換するのに役立つ置換パターンで誰かが私を助けることができますか?

ほとんど忘れていました...ファイル数は3つに限定されていません。それ以上になりますが、量は指定されていません。

4

1 に答える 1

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];、2 番目print $match[0][1];など。

于 2012-07-16T08:56:15.360 に答える