结合几个doc ready块

时间:2014-05-11 05:10:00

标签: php parsing

让我们说我们有来自两个文件的以下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");
});

1 个答案:

答案 0 :(得分: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) . '});';