自分で調べてみましたが、どうしてもわからず行き詰まりました。
どなたかお知恵を貸して頂ければ幸いです。
【使用ファイル】
a.php php処理
b.html db抽出データ表示とフォーム(編集画面)
c.html フォーム入力内容表示(確認画面)
データ送信はPOSTとSmarty併用
dbへはMySQLで格納
【変数】
$z テキストエリアの項目値
【流れ】
a.php→b.html→a.php→c.html→a.php→b.html/dbへ格納
1:a.phpでdbよりデータ(テキスト)を抽出し追加、変数$zに格納。
2:Smartyでb.htmlへ$zを送る。送り先はフォーム内のテキストエリア値。
3:$zにテキスト追加で改行発生 (\n発生と予測)。
4:b.htmlからPOSTでa.phpへ。 nl2br($z)処理をし、<br />挿入。
5:Smartyでc.htmlへ$zを送る。 $zには<br>と\nの両方が入っている状態。改行表示される。ブラウザのページソースでは<br />が入っている。
6-1:c.html(POST)→a.php(smarty)→b.html str_replace("<br />,"","$z)で<br />を取り除き\nのみの状態 smartyでb.htmlへ
6-2:c.html(POST)→a.php→db格納 str_replace("<br />,"","$z)で<br />を取り除き\nのみの状態でdbへ格納
6-1,2とも<br />を入れたままだと文字列に<br />が入ってしまう
7:a.php→b.htmlで再度$zを呼び出してみると(1:の処理)<br />を取り除いたはずなのに、ブラウザではきちんと改行表示されている。
ブラウザのページソースに<br />の表示はない
【疑問点】
3:\nは発生してPOSTでa.phpにきているのか?
きている種類が\nまたは他の改行文字かどうかを調べる手段はあるのか?バイナリ関連で調べるのか?
6-1:<br />を削除してhtmlへ送っているのに改行表示されるのか?
<br />が文字列扱いになるのはなぜか?
6-2:dbでは\nが改行として認識されるのか?
7:\nしか入っていない文字列をブラウザ表示して、なぜ改行表示されるのか?
以上です。考えれば考える程にわからなくなってきました。
どうぞよろしくお願いします。
No.3
- 回答日時:
>> ブラウザは固定された(?)\nは改行として読み取るという事でしょうか。
に対する補足です。
<!-- HTML sample -->
<textarea>
「文章」
</textarea>
<!-- end of HTML sample -->
HTMLで<textarea>タグを上記のように記述すると、「文章」が複数行なら、
Webブラウザに表示されるテキストエリア内の「文章」も複数行になります。
ですから、プログラムで、
print("<textarea>\n");
print($z); //<-- $zには改行(\n)が含まれています。
print("</textarea>\n");
と記述すると、プログラムからWebブラウザに送られるHTMLソースは
上記の<!-- HTML sample -->と同様になり、$zの改行が反映される
というわけです。
No.2ベストアンサー
- 回答日時:
初回答です。
言葉足らずだったらごめんなさい。まず、
>> 3:\nは発生してPOSTでa.phpにきているのか?
は、はっきりとは覚えていませんが、<textarea></textarea>に
入っている文字列をプログラムで受け取った場合、文字列には改行文字が入っていたはずです。
$z = str_replace("\n","hogehoge",$z);
print($z);
としてみて、改行位置にhogehogeが入っていれば、改行文字は\n
ということになるのではないでしょうか。
置換されていない場合は、\nを他の文字に置き換えて試してみれば
よいのでは?
次に、
>> 6-1:<br />を削除してhtmlへ送っているのに改行表示されるのか?
>> 7:\nしか入っていない文字列をブラウザ表示して、なぜ改行表示されるのか?
です。
$zには改行文字\nが入っています。
(例えば、$z="aaa\nbbb\n"とします。)
この状態で、
print("<textarea>\n");
print($z);
print("</textarea>\n");
を実行すると、HTML上では、
<textarea>
aaa
bbb
</textarea>
となり、WEBブラウザで見ると、
---------
|aaa
|bbb
---------
というテキストエリアとして表示されます。
(実際にHTMLを書いて、WEBブラウザで表示してみるとわかります。)
最後に、
>> 6-2:dbでは\nが改行として認識されるのか?
です。
これはOS等の環境によって変わってくる可能性はあると思いますが、
大雑把に言って、プログラムから改行文字をDBに送った場合、
DBの方でも改行文字として認識してくれるはずです。
ありがとうございます!
ブラウザは固定された(?)\nは改行として読み取るという事でしょうか。現在テスト環境にいないので、すぐに取り掛かれないのがもどかしいですが、月曜に早速テストしてみようと思います。
$zに来ている改行文字がなんなのかを調べてみます。
1人で煮詰まってたので、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP php ログイン 1 2022/11/01 00:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
テキストファイルから改行コー...
-
エスケープ文字の復帰(¥r)と...
-
グレープシティのSPREAD...
-
jsp 改行コードで改行させて表...
-
ExcelVBAでメールを作成してメ...
-
C++で空Enterの入力を判...
-
変数の中の改行コードをBRタグ...
-
VBでcsv読込TextFieldParser...
-
Excel VBS、ADODB.Streamで改行
-
fgetsとsscanf
-
エディットボックスで改行
-
ファイルから読み取った改行文...
-
バーコード入力と手入力の判断...
-
エクセルVBA 文字列領域が不足...
-
itextで改行するには
-
COBOLの改行
-
Excel VBAからBeckyを起動して...
-
マクロでセル内の改行を削除す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
ファイルから読み取った改行文...
-
JAVA System.out.println の ...
-
C++で空Enterの入力を判...
-
COBOLの改行
-
テキストファイルから改行コー...
-
改行について
-
【VBA】エクセルで最後の不要な...
-
1行ごとに取得して、その改行...
-
jsp 改行コードで改行させて表...
-
VBAでCSVをExcelに取り込む時に...
-
エクセルVBA 文字列領域が不足...
-
最終行の改行について
-
改行を読み飛ばす
-
コンボボックスの項目中に改行を
-
ExcelVBAでメールを作成してメ...
-
テキストボックス行の桁数を制...
-
JavaMail,本文中の改行について
おすすめ情報