• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:表(<table>)の直前が、改行されてしまう。)

表の直前が改行されてしまう問題について

このQ&Aのポイント
  • perlでコーディングしています。データベースはmdbファイルです。テキストエリア内にhtmlタグでデータを書き込み、mdbのメモ型フィールドを更新しています。しかし、<table>タグを改行して書き込むと、ブラウザに表示された表の直前が改行されてしまいます。改行キーと改行タグの変換が関係している可能性がありますが、解決策が分かりません。
  • 現在、perlとcgiを使用しているWebエディタ内で、テキストエリアに書き込まれたデータをmdbファイルのメモ型フィールドに更新し、ブラウザで表示しています。しかし、<table>タグを改行して書き込むと、ブラウザに表示された表の直前が改行されてしまいます。改行キーと改行タグの変換が関係している可能性がありますが、解決策が見つかりません。
  • perlでコーディングしているWebエディタで、テキストエリア内にhtmlタグを使用してデータを書き込み、mdbファイルのメモ型フィールドを更新しています。しかし、表を表示するために<table>タグを改行して書き込むと、ブラウザに表示された表の直前が改行されてしまいます。改行キーと改行タグの変換が関係している可能性がありますが、対策が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

HTMLは、空白文字は次のように処理します。 Paragraphs, Lines, and Phrases (ja) ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/text.html#h-9.1 )  言い換えれば改行コードの変更は不必要です。  <p>段落</p>でマークアップすべきで、行間が広ければスタイルシートで調整するべきです。 <br>は次のような特殊な場合を除いて通常はHTML内に表れない要素です。 <address>  東京都新宿区<br>  なんとか町なん丁目何番地<br>  誰それ誰べえ<br> </address> 【引用】____________ここから BR要素は、現在のテキスト行を強制的に区切る(終了させる)。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Paragraphs, Lines, and Phrases (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/text.html#edef-BR )]より ><table>~</table>の範囲を、 >置き換え演算子を使って、改行(<p>$&</p>)させているのでしょうか。  s/^.*$/<p>$&<\/p>/;  は、s///;で置換演算子です。$&はマッチしたものすべて、^は行頭$は行末 _____________________________  テスト結果 スクリプトは・・末尾(text2html.pl)、 perl text2html.pl; <p> のように、改行した状態で更新すると、書き込んだ改行分だけ、ブラ ウザに表示された表の直前が改行されてしまいます。 </p> <p> (mdbファイルに直接書き込んでも同現象となりました。) </p> <table> <tbody> <tr> <td>・・・</td> <td>・・・</td> </tr> </tr> </tbody> </table> <p> と改行せずに書き込むと、ブラウザに表示された表の直前は改行され ませんでした。 </p> __________________以下すべて(text2html.pl)________ #!/usr/local/bin/perl use strict; my $tableCheck = 0; while(<DATA>){ if( /<\/table>/ ){ $tableCheck = 0; } elsif( /<table[^>]*?>/ ){ $tableCheck = 1; } else{ if($tableCheck!=1){s/^.+$/<p>\n\t$&\n<\/p>/;} } print; } if($tableCheck==1){ print "\n\ntableが閉じられていません!!\n";} __END__ のように、改行した状態で更新すると、書き込んだ改行分だけ、ブラウザに表示された表の直前が改行されてしまいます。 (mdbファイルに直接書き込んでも同現象となりました。) <table> <tbody> <tr> <td>・・・</td> <td>・・・</td> </tr> </tr> </tbody> </table> と改行せずに書き込むと、ブラウザに表示された表の直前は改行されませんでした。

asakichi00
質問者

補足

ご回答、重ねてありがとうございます。 やはり初心者の私のレベルでは、ちょっと難しかったので、 以下のように、やや強引に改行を排除しました。(邪道ですが) ↓================================== 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; ↑================================== 今後、もっと勉強いたします。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • YkazubonY
  • ベストアンサー率30% (26/86)
回答No.3

<textarea>タグ内に<table>タグを記述しようなんて、初めて聞きました。 普通は逆なんじゃないですか。www

asakichi00
質問者

お礼

ご回答ありがとう。 えーっと・・・、 言わずもがな。 そんなことは承知の上。 普通のことだったら聞かないから。 必要性があって、やってるのね。 でわ。

全文を見る
すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

>perlやcgiの問題ではないかも知れませんが、 ともいえるし、HTMLの仕様でもあるし、ブラウザの仕様ともいえます。 HTMLは、厳密に要素内に入りうる要素は決められています。たとえばTABLEには 【引用】____________ここから <!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Tables in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#edef-TABLE )]より CAPTION? ゼロもしくは一個 (COL*|COLGROUP*), ゼロもしくは任意の数 THEAD?, ゼロもしくは一個 TFOOT?, ゼロもしくは一個 TBODY+ 一個以上  と・・・書かれている。<br>は入らない。  この場合、ブラウザは<br>--inline---要素はTABLE内の外・・に置かれる。よって <table><br><tbody><br><tr><br><td>・・</td><br></tr><br></tbody><br></table>は、ブラウザによって、 <br><br><br><br><br><br> <table><tbody><tr><td>・・</td></tr></tbody></table> と解釈されなければならない。<br>が他のinlne要素や非空白文字でもでも同じ結果になる。  また、tableはブロック要素なので、inline要素に続く場合は、そこでブロック要素が終了するとみなさなければならないため 7.5.3 ブロックレベル要素と行内要素 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.3 ) なんたらかんたら<br> なんたらかんたら<br> <table>  というのはおかしい。 <p>なんたらかんたら</p> <p>なんたらかんたら</p> <table>  ・・です。<br>は段落内の強制改行なので通常のHTML内には殆ど出現しない。 while(<IN>){ if( /<\/table>/ ){$tableCheck = 1;} elsif( /<table[^>]*?>/ ){$tableCheck = 1;} if($tableCheck!=1){/^.*$/<p>$&</p>/g;} } とか・・・かな。 出力されるHTMLをみて、仕様書と照合しましょう。

asakichi00
質問者

補足

ご回答ありがとうございます。 >HTMLは、厳密に要素内に入りうる要素は決められています。 ここまで、詳しいこと(基本的なこと)まで知りませんでした。 お恥ずかしい限りです。勉強になりました。 あと、聞きづらいのですが、 小生、perl初心者でございまして、可能ならば教えていただきたいのですが。 >while(<IN>){ >if( /<\/table>/ ){$tableCheck = 1;} >elsif( /<table[^>]*?>/ ){$tableCheck = 1;} >if($tableCheck!=1){/^.*$/<p>$&</p>/g;} >} について、 <table>~</table>の範囲を、 置き換え演算子を使って、改行(<p>$&</p>)させているのでしょうか。 処理の内容が、勉強不足にて理解できていません。 ご教授願えませんでしょうか。 よろしくお願い申し上げます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 表の中の改行

    メモ帳を使ってHPを作っているのですが 表の中に長い文章を書くので改行したいのですが <Br>で改行してもうまくいきません。 表の中で改行出来て縦の中央に配置したい場合 どうすればいいでしょうか? 1行と2行が入り混じっています。 <Table Border> <Tr> <Td>1行</Td><Td>2行</Td><Td>1行</Td></Tr> </Table>

  • 表の作成ができません!(HTML)

    メモ帳にHTML記述でホームページを作っています。 表を作成したいのですが、表示されません。 <html> <head> <title>~</title> </head> <body> <table border=1> <tr> <td>AAA</td> <td> <br>aaaaaaaaaaa <br>bbbbbbbbbbb <br>ccccccccccc </td> </tr> <tr> <td>BBB</td> <td> <br>dddddddddd <br>eeeeeeeeee </td> </tr> </table> </body> </html> で作っています。 (※aaaaaaは、たとえです) 同じタグ記述で、改行のない表を作ったら、これは表示されました。 表内に改行させた場合は、エクスプローラには表示されないのでしょうか?

  • スクロール式テーブル内での改行を反映させる方法

    アメブロのサイドバーでスクロール表示式の<table>タグを使いたいのですが、本文内が改行できず困っています。 アメブロの「フリースペース」「フリープラグイン」のどちらで試しても改行が反映されません。 スクロール素材は以下のソースのものです。 <!--★始まり--> <table cellpadding="7" cellspacing="2" bgcolor="#225599" width="320" style="font-size:13px;"> <tr><th bgcolor="#bbbbbb"> タイトル </th></tr> <tr><td bgcolor="#ffffff"> <textarea rows="6" style="width:100%;border-style:none;scrollbar-base-color:#88f6c6;"> 本文 本文 本文 本文 </textarea> </td> </tr> <tr><td bgcolor="#bbbbbb" height="16"></td></tr> </td> </tr> </table> <!--終わり★--> 「フリースペース」の方で上記タグを入れると、 プレビュー欄に自動で<br />タグが挿入され その状態で本文が表示されてしまいます。 「フリープラグイン」の方では 文字と文字の間で改行ができるものの なんの文字もない部分で「行間を1行あける」という事ができません。 フリースペースでもプラグインでもどちらを使っても構わないのですが 改行を反映させる方法(タグなどの挿入)があるでしょうか? 上記の<table>タグを使わなくても スクロールができるような素材でしたら構わないのですが。 何かありましたら教えて下さい。

  • <table>タグについて

    以前同じような質問をさせていただいたのですが、以前質問した逆の内容が わからないので質問させていただきます。 以前の質問では<table>タグを使用して表を同じ高さに表示させるという 質問をさせていただきました。 【回答】 <table><tr> <td><table>******</table></td> <td><table>******</table></td> </tr></table> という回答をいただきました。(ありがとうございました。) 今度は逆に表を上下に表示したいと考えたのですが、どうしても 同じ高さに表示してしまいます。(っていうか普通に<table>タグを 書けば上下に表示するとおもうのですが・・・) おそらくタグを閉じたりするタイミングがおかしいかと思われますが、 その他ご存知の事がありましたら宜しくお願いいたします。 <table>タグのclassオプションを同じ名前にすると問題でもあるのでしょうか? ご多忙の中、大変申し訳ありませんが、ご回答宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • 表を指定した場所で改行する方法

    <table border='1' align='left'> <tr><td>テスト</td></tr> </table> まず上記のように表を作ったとします。 これをCGIで追加すると下記のようにHTML上で横方向に自動的に同じ表が作られて表示されます。 <table border='1' align='left'> <tr><td>テスト</td></tr> </table> <table border='1' align='left'> <tr><td>テスト</td></tr> </table> <table border='1' align='left'> <tr><td>テスト</td></tr> </table> <table border='1' align='left'> <tr><td>テスト</td></tr> </table> これを途中で例えば3番目で改行させたい場合はどうすればいいのでしょうか?。 分かりづらいですがよろしくお願いします。

    • 締切済み
    • CGI
  • TEXTAREAの改行がうまくいきません。

    自作で掲示版を作成している、初心者です。現在作成中の掲示版にTEXTAREAに入力し、LOG上では1行目<BR>2行目といった形で改行をBRに置き換えて保存していますが、その修正としてLOGからデータをとり改行状態で表示させたいのですが、 うまく改行されない状態です。下記にLOGより読み込み。タグを\rに置き換えて いますが、TEXTAREAに表示されなく、改行表示どころではありません。 いったいどうすればよいのでしょうか?ご教示をお願いします。 <CGI文> $wkaaa1 = $IXUSERINF{Enaiyo}; データを取得 $wkaaa =~ &notag1($wkaaa1);  変換(これがおかしい?) $mesbuff .= "<TR><TD nowrap ><TEXTAREA ROW=\"10\" COLS=\"48\" NAME=\"Enaiyo\" WRAP=\"soft\">$wkaaa </TEXTAREA></TD></TR>"; <sub> sub notag1 { local($_) = @_; s/&/&amp;/g; s/"/&quot;/g; s/</&lt;/g; s/>/&gt;/g; s/&lt;br&gt;/\n/gi (これで <BR>を\n(改行)にしてるつもり return $_; }

    • ベストアンサー
    • CGI
  • htmlタグを改行もせずに隙間なく書き続けると問題ありますか?

    htmlタグを改行もせずに隙間なくすると問題ありますでしょうか? ページ内の文字数(バイト数?)を 減らそうと思い、隙間なくしてみたいのですが。 例えば、改行して <table~省略> <tr> <td> <font~省略> </td> </tr> </table> を、 <table~省略><tr><td><font~省略></td></tr></table> と改行せずに、連ねてしまうと、 何か問題はありますでしょうか? 検索で順位が下がるとか、タグが読みづらくスパム扱いされたりはしないでしょうか? よろしくお願いします。

  • TEXTAREAの改行をデータへ反映

    よろしくお願いします。 フォーム上で入力した値をCSVに反映させるようなものを作っているのですが、TEXTAREAで改行した値がCSVデータ上で改行されなくて困っています。 <TABLE>  ・  ・  ・ <TR> <TD>コメント:</TD> <TD><TEXTAREA NAME="COMMENT" rows="2" cols="40"></TEXTAREA></TD> </TR> </TABLE> 入力した値: ---------- あああ※ いいい※ ううう        ※位置で改行 ---------- CSVデータ内: ~,あああいいいううう webサーバー・・・HP-UX web・・・IE 開発端末・・・windows2000(Tera Term 使用) 以上。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 表(table)の字の大きさの設定

    ブログに表を載せたいと思って調べているところなのですが、↓のようにして、入力すると、字が14くらいの大きさになってしまいます。9くらいの小さめの字にしたいのですが、字の大きさは、どのように入力すれば良いのでしょうか?教えて下さい。どうぞ宜しくお願い致します。 <div align="center"> <table border=1><tr><tdalign="center"colspan="3"bgcolor="#99ee66">あ<BR>あ</td></tr><tr><td align="center" colspan="3"bgcolor="#ffcd59">あ</td></tr><tr><td width="30" align="left" valign="top" bgcolor="#efefde">あ</td><td width="45" align="left" valign="top" bgcolor="#efefde">あ</td><td align="left">・あ<BR>あ</td></tr><td width="30" align="left" valign="top" bgcolor="#efefde">あ</td><td width="45" align="left" valign="top" bgcolor="#efefde">あ</td><td align="left">あ</td></tr></table></div>

    • ベストアンサー
    • HTML
  • タグ内での改行について

    初歩的な質問ですが、教えて下さい。 テーブルタグを使って以下のように記述しました。 <table> <tr> <td><img src="a.jpg"> </td> </tr> </table> すると、画像の下部と罫線との間に隙間があいてしまって見栄えが悪かったのです。 そこで試行錯誤して以下のように訂正し、<td>~</td>間の改行をなくしたところ、隙間がなくなりました。 <table> <tr> <td><img src="a.jpg"></td> </tr> </table> なぜこのように改行が影響する場合があるのでしょうか? 教科書的な説明で「改行は影響しない」と聞いていたので・・・。 ブラウザはIEを使っています。

    • ベストアンサー
    • HTML
このQ&Aのポイント
  • 回答をいただけると助かります。よろしくお願いします!
  • ご利用の製品タイプ、製品名・型番、接続方法などをお知らせください。
  • お困りごとの詳細や表示される内容などの情報をご記入ください。
回答を見る

専門家に質問してみよう