アプリ版:「スタンプのみでお礼する」機能のリリースについて

エラーを取り除くことができず、困っています。
助けてください。

下記のようなコードで、PHPからjavascriptに文字列を渡しているのですが、
文字列に改行コードがあるとエラーになってしまいます。
(改行コードがない場合はエラーはでません)
文字コードはEUC-JP、改行はLFとしています。

エラーの原因と、対策を教えてください。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
<!--
function sampl(str)
{
alert(str);
}
//-->
</script>
</head>
<body>
<form method="post" action="#">
<?php
$str = "テスト\n改行あり";
?>
<input type="button" value="実行" onClick="sampl('<?=$str?>')">
</form>
</body>
</html>

A 回答 (4件)

こんな感じでしょうか。


<?php
$str = 'テスト
改行あり';
echo str_replace("\n",'\n',$str);
?>

この回答への補足

ご回答ありがとうございます。

サンプルのコードでは上手くいくのですが、
DBから変数を呼出した場合だと、エラーが消えません。
(ご教授いただいた方法だと、改行後に\nが追加されますが、改行自体はなくなりません。)

ご教授頂いた方法 str_replace("\n",'\n',$str);
の意図がよくわからないのですが、教えていただけないでしょうか?

補足日時:2006/10/22 10:31
    • good
    • 0

間違えました。


ereg_replaceではなくstr_replaceです。

<?php
$str = "テスト\n改行あり";
$str = str_replace( "\n" , "\\n" , $str);
?>

この回答への補足

何度もありがとうございます。

やはり、サンプルでは上手くいくのですが、DBを使うとうまくいきません。

DBの変数扱いに問題があるのかもしれません。

補足日時:2006/10/22 11:36
    • good
    • 0
この回答へのお礼

まとめて、お礼を申し上げます。

エラーの原因が、データベースの変数の取り扱いにあるようです。

javascriptよりもphp側の問題の用ですので、phpのカテゴリに質問を設定しなおしました。

お礼日時:2006/10/22 12:09

こちらでいかがでしょう?



<?php
$str = "テスト\n改行あり";
$str = ereg_replace( "\n" , "\\n" , $str);
?>

「\n」を「\\n」に変換します。
そうするとjavascriptのエラーが発生しません。

この回答への補足

ご回答ありがとうございます。

No.2と同じ結果でした。
(サンプルのコードでは上手くいきますが、実際DBからの変数を使うとうまくいきません)

補足日時:2006/10/22 11:14
    • good
    • 0

エラーがでているというのにエラーメッセージの情報がないですね。


(問題解決に結びつくすごく重要な情報なのですが。)


エラーの原因は、phpの処理結果が以下のようになっているためではないでしょうか?

<input type="button" value="実行" onClick="sampl('テスト
改行あり')">

これだと、文字列が 「'テスト」 で不完全になっているので
JavaScriptのエラーがでると思います。

修正方法は、例えば以下のような結果が得られるようにphpを書くことです。

<input type="button" value="実行" onClick='sampl("テスト\n改行あり")'>

この回答への補足

ご回答ありがとうございます。

まず、エラーメッセージは unterminated string literal と出ています。
(失礼いたしました。)

なお、ご指摘のように、直すとエラーは回避できました。
ただ、実際には、データベースから文字列を取り出し、それをjavascriptに渡したいので、私が直面しているケースでは、ご指摘のような方法はとれません。

文字列(改行コード)を変換してやればいいのだと思いますが、方法がわかりません。

対策方法があれば、引き続き教えてください。

補足日時:2006/10/22 06:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!