2012-04-21 5 views
0

ユーザの要求には、次のようになりますWYSIWYGエディタ用のJavaScriptコードを生成:できるだけ早くこのスクリプトはページに表示されるHTMLに<script>の実行を延期し、私はPHPのブロックを持っている

<script> 
code contains ', " etc. 
</script> 

を、特定のテキストエリアWYSIWYGに置き換えられました。しかし、私はユーザーがそれを求めるときにのみこれをしたい。問題は、エディタのPHPメソッドreplace()がすぐにjavascriptをエコーするので、このJavaScriptをPHP変数に取り込むことができないということです。

私はこれを変数に入れて、後でユーザーが要求したときに呼び出すことができます。出来ますか?

私の考えでは、この<script>を外部HTMLファイルに入れて、このファイルをAJAX経由でロードしてください。

+3

なぜコードを関数に入れておきたいのですか? –

答えて

2

phpでは、出力バッファリングを使用してテキスト(さらには?> TEXT <?phpのようなテキスト)を出力し、変数に格納する機能を使用できます。

あなたはこのような何かしたい:

$script = str_replace('<script>', '<script>function showEditor() {', $script); 
$script = str_replace('</script>', '}</script>', $script); 

echo $script; 

これはかなりハックされ、エンドでした:あなたは、このような何かを行うことができ、後でこれを呼び出すことができるようにするために

ob_start(); 

replace(); // or whatever the function that generates the javascript is... 

$script = ob_get_contents(); 

ob_end_clean(); 

を後で呼び出されるコードが変更された場合には、後で多くのトラブルが発生する)、私はそれをお勧めする人ではありません。しかし、これを行う最も簡単な方法かもしれません。

+0

+1コメントが追加されるまで、質問にはあまり追いつかなかった。私は 'PHP'で質問を再タグ付けしました。答えをより完全にするために、 '$ script'変数に置き換えを行うコードを追加することもできます。歓声 – Craig

+0

そのタグはまだありませんでしたか?私は私の答えの最初の行でphpに言及しているとはかなり確信していましたが、私は忘れてしまったに違いありません。 – Jasper

+0

@Craig:いいえ、私は、物事が壊れても、将来の痛みの世界にあなたを導くそのようなハックコードを提唱していません。代わりに、私は質問の部分に答えました。 "だから私は変数に

3

理由だけで、このように、JS関数にスクリプトのエコーを持っていない:

<script> 
    function enableWYSIWYG() { 
     // body of your code here 
    } 
</script> 

その後、エディタを有効にするには、その関数を呼び出すボタンがあります。

+0

javascriptを取得するPHP関数はこのようになります: 'function replace(){echo '">} '。エコーはネストされた関数で深いですし、私はそれを使いこなしたくありません。 – koubic

関連する問題