2014-05-11 54 views
0

可以說我們有以下來自兩個文件的JavaScript片段。我們如何使用PHP構建all.js?結合幾個文檔就緒塊

a.js

var a = 20; 
function foo() { 
    console.warn('bar'); 
} 
foo(); 
$(document).ready(function() { 
    $(".someid").on("click", ".class", function() { 
    do_stuff(); 
    }); 
}); 

b.js

var x = ['room', 'admin', 2]; 
$(document).ready(function() { 
    $.post("url/", { n: 80}, function(j) { 
    console.log(j); 
    }, "json"); 
}); 

all.js

var a = 20; 
function foo() { 
    console.warn('bar'); 
} 
foo(); 

var x = ['room', 'admin', 2]; 

$(document).ready(function() { 
    $(".someid").on("click", ".class", function() { 
    do_stuff(); 
    }); 
    $.post("url/", { n: 80}, function(j) { 
    console.log(j); 
    }, "json"); 
}); 
+0

什麼喲umean,「建立與PHP」?合併這兩個文件? '$ all = file_get_contents('a.js')。的file_get_contents( 'b.js')'。 –

+0

@MarcB不是那部分。假設我們已經有'$ a'和'$ b'中的文件內容。我們希望以'all.js'中的'$ all'結尾。 –

+0

你不能。除非你想爲PHP構建一個JS解析器。 –

回答

0

This is what I cooked在結束。它假定遵循一些慣例,如果不遵守則會中斷。但對我現在的需求來說,這已經足夠了。

$js_sources = array(' 
    var a = 20; 
    function foo() { 
    console.warn("bar"); 
    } 
    foo(); 
    $(document).ready(function() { 
    $(".someid").on("click", ".class", function() { 
     do_stuff(); 
    }); 
    });',' 
    var x = ["room", "admin", 2]; 
    $(document).ready(function() { 
     $.post("url/", { n: 80}, function(j) { 
     console.log(j); 
     }, "json"); 
    }); 
'); 
$outjs = array(); 
$outready = array(); 
foreach($js_sources as $js) { 
    $js = explode('$(document).ready(function() {', $js); 
    $outjs[] = $js[0]; 
    $js = $js[1]; 
    $mark = strrpos($js , '});'); 
    $outjs[] = substr($js, $mark + 3); 
    $outready[] = substr($js, 0, $mark); 
} 
$out = implode(PHP_EOL, $outjs) . 
    '$(document).ready(function() {' . implode(PHP_EOL, $outready) . '});';