※ ChatGPTを利用し、要約された質問です(原文:表(<table>)の直前が、改行されてしまう。)
表の直前が改行されてしまう問題について
このQ&Aのポイント
perlでコーディングしています。データベースはmdbファイルです。テキストエリア内にhtmlタグでデータを書き込み、mdbのメモ型フィールドを更新しています。しかし、<table>タグを改行して書き込むと、ブラウザに表示された表の直前が改行されてしまいます。改行キーと改行タグの変換が関係している可能性がありますが、解決策が分かりません。
現在、perlとcgiを使用しているWebエディタ内で、テキストエリアに書き込まれたデータをmdbファイルのメモ型フィールドに更新し、ブラウザで表示しています。しかし、<table>タグを改行して書き込むと、ブラウザに表示された表の直前が改行されてしまいます。改行キーと改行タグの変換が関係している可能性がありますが、解決策が見つかりません。
perlでコーディングしているWebエディタで、テキストエリア内にhtmlタグを使用してデータを書き込み、mdbファイルのメモ型フィールドを更新しています。しかし、表を表示するために<table>タグを改行して書き込むと、ブラウザに表示された表の直前が改行されてしまいます。改行キーと改行タグの変換が関係している可能性がありますが、対策が分かりません。
表(<table>)の直前が、改行されてしまう。
perlでコーディングしています。データベースはmdbファイルです。
<textarea>内を簡単なWebエディタに見立てて、
<textarea>内へhtmlタグなどで書き込んだデータを、
mdbのメモ型フィールに更新し、これをブラウザで表示させています。
このとき、表(<table>)を表示させるために、<textarea>内に<table><tr><td>タグを入力するのですが、mdbファイルに更新する際に、
<table>
<tr>
<td>
:
のように、改行した状態で更新すると、書き込んだ改行分だけ、ブラウザに表示された表の直前が改行されてしまいます。
(mdbファイルに直接書き込んでも同現象となりました。)
<table<tr><td>・・・
と改行せずに書き込むと、ブラウザに表示された表の直前は改行されませんでした。
なお、ブラウザに表示させる側のcgiファイルには、改行キー(¥nなど)を改行タグ(<br>)に変換させるために、
$textarea1 =~ s/\r\r/<br>/g;
$textarea1 =~ s/\r/<br>/g;
$textarea1 =~ s/\n/<br>/g;
としているため、これと関係していると思われるのですが、
わたくしとしては、
●<textarea>内で手入力した改行は、ブラウザ表示に反映させるが、
●<tabel>・・・・</tabel>の部分は、改行して入力されていても、この改行だけは無視する、
と言った、都合のよいことをしたいのですが・・・、行き詰っております。
perlやcgiの問題ではないかも知れませんが、
どなたか、よいアドバイス、ご提案などございませんでしょうか。
ご教授いただければ、大変助かります。
よろしくお願いします。
補足
ご回答、重ねてありがとうございます。 やはり初心者の私のレベルでは、ちょっと難しかったので、 以下のように、やや強引に改行を排除しました。(邪道ですが) ↓================================== for ( $i=1; $i<=50; $i++){$textarea1 =~ s/\ <table/<table/g;} for ( $i=1; $i<=50; $i++){$textarea1 =~ s/\ <tr/<tr/g;} for ( $i=1; $i<=50; $i++){$textarea1 =~ s/\ <td/<td/g;} for ( $i=1; $i<=50; $i++){$textarea1 =~ s/\ <\/td>/<\/td>/g;} for ( $i=1; $i<=50; $i++){$textarea1 =~ s/\ <\/tr>/<\/tr>/g;} for ( $i=1; $i<=50; $i++){$textarea1 =~ s/\ <\/table>/<\/table>/g;} $textarea1 =~ s/(\r\n\n|\r\n|\n|\r)<tr/<tr/g; $textarea1 =~ s/(\r\n\n|\r\n|\n|\r)<td/<td/g; $textarea1 =~ s/(\r\n\n|\r\n|\n|\r)<\/td>/<\/td>/g; $textarea1 =~ s/(\r\n\n|\r\n|\n|\r)<\/tr>/<\/tr>/g; $textarea1 =~ s/(\r\n\n|\r\n|\n|\r)<\/table>/<\/table>/g; ↑================================== 今後、もっと勉強いたします。 ありがとうございました。