1

私はこれを正しくやっていますか?私が理解しているように、print_rを呼び出すときに「戻り値」をtrueとして定義すると、文字列が返されるはずです。私は次の機能を持っています:

function alert($string) {
    echo '<script>alert("' . $string . '");</script>';
}

そして、その関数に通常の古い引用符で囲まれた文字列を渡すと、うまく機能しますが、これをフィードすると:

alert(print_r($array,true));

何も起こらず、エラーも表示されませんが、print_r($array,true) のエコーは機能します。あなたが提供できる助けに感謝します.明らかに非常に小さな問題ですが、ここで何がうまくいかないのかを理解しようとしています.

4

3 に答える 3

2

使用する

<script>
    alert(<?php echo json_encode(print_r($array, true)); ?>);
</script>

代わりは。json_encode の使用に注意してください - これは'、JS メタ文字が JS 構文エラーを引き起こすのを防ぐためです。

<?php
$name = "Miles O'Brien"; // note the '-quote in there
?>

<script>
alert('<?php echo $name ?>');
</script>

あなたに与えるでしょう:

alert('Miles O'Brien');
      ^-- start of string
              ^--end of string
               ^^^^-- unknown variable/function.
于 2013-09-23T17:57:08.967 に答える
1

アラート機能には、その入力を処理する際に 2 つの問題があります。まず、前述のように、JS にクォートがありません。次に、新しい行を文字列 '\n' に変換する必要があります。そうしないと、アラート関数 (js 内) の呼び出しが別の行で終了するため、正しくありません。例えば:

    alert("hello
    world");

は無効な構文です。

したがって、このアラート機能はおそらく機能します。

    function alert($string) {
        $string=preg_replace('/\n/m','\\n',$string);
        echo '<script>alert("' . $string . '");</script>';
    }
于 2013-09-23T18:10:46.803 に答える
0

print_r(およびvar_dump) はその内容を stdout に出力します。ただし、PHP のバッファを使用してこの動作を制御できます。

出力バッファリングとはをご覧ください。、次に http://www.php.net/manual/en/ref.outcontrol.php

于 2013-09-23T18:00:26.567 に答える