2011-06-15 7 views
2

私のPHPコード:PHPオブジェクトからシングルラインJavaScriptを出力するにはどうすればよいですか?

include "something.php" 
$mysite = writeContent(); 

//footer.php 
ob_start(); 
echo "<script...all my javascript here...</script>"; 
$object = ob_get_contents(); 
ob_end_clean(); 

$search = array("\n","\r"); 
$replace = array("",""); 
$object = str_replace($search, $replace, $object); 
echo $object; 

その後、私はJavaScriptが不正であると動作しません。

私はgzipを使ってスピードを上げることができますが(私が求めているものではありません)、実際にコードから余分なスペースを取り除くことが望ましいです。

+2

ちょうどどこでもあなたが可能にそれらを置くことができるし、それが正常に動作する必要があり、すべての行の末尾にセミコロンや括弧を持つようにしてくださいを参照してくださいです...あなたは、あなたの "の例を提供することができます壊れた 'JS? –

+1

出力したいJavaScriptの例と不正な結果を追加できますか? – andyb

+0

FWIW、 'str_replace'の検索部分に配列を使用しているからといって、置き換えの配列が必要なわけではありません。空の文字列を1つだけ与えることができます。 – JAAulde

答えて

2

セミコロンに問題がある可能性がありますか?あなたは、おそらく間違っているか見てvalidate your JavaScript firstしたいのですが、ここでは多くの可能性の一つだ:ジョシュ以来

var foo = 0 // This works fine 
var bar = 1 
// #=> 
var foo = 0var bar = 1 // This doesn't 

// And FWIW, this is what you want: 
var foo = 0; 
var bar = 1; 
2

理想的には、あなたのJSをLINTとし、適切にテストされた小型化装置で実行します。 PHPの場合、jsmin-phpを大成功に使用しました。

+0

ありがとう、悪い、jsmin-phpを試してください – braindamage

+0

@brain_damage:問題ありません。 – JAAulde

+0

には "includes/jsmin.php"が含まれます。エコーJSMin :: minify($オブジェクト); =いいです! – braindamage

2

が彼のコメント返事をしなかった、私はなります。

改行を置き換えて、JavaScriptにセミコロンがない場合、インタープリタは文の終わりを検出する方法がありません。したがって、スクリプトのすべての行に ";"が付いていることを確認してください。あるいは、新しい行をすべてセミコロンで置き換えることもできます。行内の2つのセミコロンは構文エラーではありません。理想的ではありませんが、そのトリックを行います。

JAAuldeの提案は、最小化ツールを使って実行するのが最良の方法です。ここではPHP https://github.com/rgrove/jsmin-php/

のための1つは、Combining and Compressing multiple JavaScript files in php

関連する問題