1

ここで問題です。MySQL DB にテキストとしてデータがあります。データは mysql_real_escape_string を介して挿入されます。ユーザーに表示されるデータに問題はありません。

ある時点で、このデータを foo という JavaScript 関数に渡したいと思います。

// This is a PHP block of code
// $someText is text retrieved from the database

echo "<img src=someimage.gif onclick=\"foo('{$someText}')\">";

$someText のデータに次のような改行がある場合:

Line 1
Line 2
Line 3

HTML出力が

<img src=someimage.gif onclick="foo('line1
line2
line3')">

問題は、改行と改行を保持しながらコードを壊さずに、$someText を JavaScript の foo 関数に渡すにはどうすればよいかということです。

================================================== =========================================

このようにjsonを使用した後:

echo "<img src=someimage.gif onclick=\"foo($newData)\">";

次のような HTML を出力しています。

onclick="foo("line 1<br \/>\r\nline 2");">

画像の後に \r\n2 行目");"> が表示されます。

4

4 に答える 4

2

json_encode()行く方法です:

$json = json_encode($someText); # this creates valid JS
$safe = HtmlSpecialChars($json); # this allows it to be used in an HTML attribute
echo "<img src=someimage.gif onclick=\"foo($safe)\">";

ここでデモを見ることができます:http://codepad.org/TK45YErZ

于 2012-04-03T22:51:40.150 に答える
0

HTML から JavaScript を引き出すことで、多くの頭痛の種から解放されます。

<img id="myImage" src="someimage.gif"/>
<script type="text/javascript">
    var str = <?php echo json_encode($json); ?>;
    document.getElementById('myImage').addEventListener(
        'click',
        function() {
            foo(str);
        }
    );
</script>

それとも似たようなもの...

于 2012-04-03T23:26:41.383 に答える
0

私が悪く解釈していない場合は、これを行うことができます:

// This is a PHP block of code
// $someText is text retrieved from the database

echo "<img src=someimage.gif onclick=\"foo('{".trim( preg_replace( '/\s+/', ' ',$someText ) )."}')\">";
于 2012-04-03T22:48:18.530 に答える
0

新しい行をエスケープするには json_encode() だけで十分です

echo "<img src=someimage.gif onclick=\"foo(".json_encode($newData).")\">";
于 2012-04-03T23:38:27.180 に答える