プロが教えるわが家の防犯対策術!

こんにちは。

データベースから取得したデータを編集する仕組みを作っています。
下記のサンプルは単純化したもので、データベース部分は省いています。


<?php

print <<<EOF

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

EOF;

$test2 = "こんにちは<br />さようなら";
$test2 = str_replace("<br />","\n", $test2); //この1行に問題あり?

print <<<EOF

<script type='text/javascript'>
function ListToField(){
document.getElementById('aaa').bbb.value = "$test2";
}
</script>

<a href='#' onClick='ListToField()'>テスト</a>
<br>
<form id="aaa" action="ccc.php" method="post">
<textarea name='bbb' id="bbb" cols=20 rows=2>$test</textarea>
</form>

</body>
</html>

EOF;

?>



「テスト」をクリックしたときに、<br>を\nに変換したものをtextareaに表示させたいのですが、何も表示されません。

テキストエリアの「$test」は別に使用するので、このまま置いておきたいのです。
あくまで、「name='bbb'」をたよりに$test2の中身を渡したいのですが、
改行が入っていると渡せないのでしょうか?

プログラミング初心者で、いろいろ調べてもよくわかりませんでした。

ご教示いただけると嬉しいです。よろしくお願いします。

A 回答 (2件)

http://ideone.com/6zlA9
http://ideone.com/IZsyt 文法エラーでダメ。
http://ideone.com/1VvJu 改行できる
http://ideone.com/uNRgO PHPはリテラル中に改行をそのまま突っ込める。

C言語にはマクロ展開というのがあってだな。ソースコード上の文字列をそのまま置き換えるんだ。それに関して
http://ja.wikipedia.org/wiki/%E4%BA%BA%E7%94%9F% …
という有名なトラブルがある。

で、PHPとJavascriptの動作原理が分かっているなら、これと同じ現象が起こるということにも納得してもらえるかと。

だから、Q4594785ではこんな内容を回答した
http://oshiete.goo.ne.jp/qa/4594785.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。プログラミングの深さを思い知りました。

お礼日時:2011/03/23 19:58

> $test2 = str_replace("<br />","\n", $test2); //この1行に問題あり?



$test2 = str_replace("<br />","\\n", $test2);

多分こうかな?


javascript 側に
document.getElementById('aaa').bbb.value = "こんにちは\nさようなら";

こう渡ればいいんじゃないかな
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。単純明快で目から鱗でした。

お礼日時:2011/03/23 19:59

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