テキストファイルのHTMLタグを文字として表示させる方法
- テキストファイルのHTMLタグを文字として表示させる方法について教えてください。
- HTMLの特殊文字を表示させるための方法を知りたいです。
- Perlを使用してテキストファイル内のHTMLタグを表示させる方法を教えてください。
- ベストアンサー
テキストファイルのHTMLタグを文字として表示させるには?
テキストファイルのHTMLタグを文字として表示させるにはどうすればよいのでしょうか? <HTML>の"<"をJIS文字コードに置き換えれば良いというようなことを聞きましたが、 $_ =~ tr/</<);/s; この文字を置き換える式では駄目でした。 多分表記の仕方が間違っていると思うので正しいのをよろしくお願いします。 (上の置き換え文だと&HTML>になってしまいます。) #!/usr/bin/perl main:{ require "jcode.pl"; $file = 'file01.txt'; print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<TITLE>表\示</TITLE>\n"; open( FH, $file) or die "Can't open"; foreach( <FH> ){ $_ =~ tr/</<);/s; print $_ ."<br>"; } close(FH); print "<br>_<br><"; print "</BODY></HTML>\n"; }
- crazy_jazz
- お礼率87% (7/8)
- Perl
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
このような感じでよく変換しますがどうでしょうか? $_ =~ s/</</g; $_ =~ s/>/>/g;
関連するQ&A
- TABを表示させる方法
以前のテキストファイルのhtmlタグ<>を文字として表示されるに続いての質問ですが、 #!/usr/bin/perl main:{ $file = 'use1.txt'; print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<TITLE>表\示</TITLE>\n"; open( FH, $file) or die "Can't open"; foreach( <FH> ){ $_ =~ s/</</g; $_ =~ s/>/>/g; print $_ ."<br>"; } close(FH); print "</BODY></HTML>\n"; } 表示するのにTABが抜けて、全て左詰めという感じになります。 TABを表示させるにはどうしたら宜しいのでしょうか? よろしくお願いします。
- ベストアンサー
- Perl
- 1文字を複数の文字に変換したいです。
print で書き出したHTMLのページの下に、そのページのソースを表示 しようと思っています。 $source .= "<html><head><title><title></head><body>\n"; $source .= "ソースを表示</body></html>\n"; print "$source\n"; #-------------------------- $source =~ tr/</</; $source =~ tr/>/>/; #-------------------------- print "<br><div style=\"overflow:auto; width:550px; height:300px\"> $source </div>\n"; あたり前ですが、これだと「<」「>」は「&」になってしまいます。 「<」を「<」に「>」を「>」に変更する方法を教えて頂きたくお願い致します。
- ベストアンサー
- Perl
- CGIにおいて、エンコード・文字化けの対処方法
以下のようにCGIを記述しております。(本日勉強したてで間違いだらけでしたら申し訳ございません。) ============= #!/usr/local/bin/perl print "Content-type: text/html; charset=EUC-JP\n"; print "\n"; print "<html>\n"; print "<title>Hello CGI</title>\n"; print "<body>\n"; print "<h1>Hello CGI!</h1>\n"; print "<hr>\n"; print qq( 上記のCGIファイルのメッセージは、次のように記述しました。<br><br> #!/usr/local/bin/perl<br><br> print "Content-type: text/html\\n";<br> print "\\n";<br> print "<html>\\n";<br> print "<title>Hello CGI</title>\\n";<br> print "<body>\\n";<br> print "<h1>Hello CGI!</h1>\\n";<br> print "</body>";<br> print "</html>";<br><br> ); print "</body>"; print "</html>"; =========== 以上をIE7で表示しますと、エンコードが西ヨーロッパ言語になって文字化けを起こしてしまいます。 何か記述の仕方が間違っているのでしょうか。 よろしくお願いいたします。
- ベストアンサー
- CGI
- tsvファイルの読み込みエラー
ファイル読み込み後、内容表示するプログラムをつくったのですが、tsvファイルを読み込むとWEB画面には何も表示されず真っ白になってしまいます(普通のtxtファイルでもタブが入っていると表示しません)。tsv読み込み時は何か設定が必要なのでしょうか? #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head><title>サンプル</title></head>\n"; print "<body>\n"; if (open(FH, "data/block.txt")) { @file = <FH>; close(FH); print "<p>ファイルの内容は、<br>\n"; foreach $data (@file) { print "$data<br>"; } print "です。</p>\n"; } else { print "ファイルを読み込めません。"; } print "</body>\n"; print "</html>\n"; exit;
- 締切済み
- Perl
- perl の printでのファイルへの指示にて
独学でmacでパールを勉強しています。 始めてからまだ1週間くらい。 教科書みながら、print命令でファイルハンドルに指示を出してるのですが、 書き込めはできるのですが、 ファイルが無い場合、 新規に自動でファイルが作成されるはずとの記載があったのですが、 何故か、自動でファイルが生成されません。 調べても、設定が必要等言われてますが、 mac自体も初心者でほとんどわかりません。 どのような設定にすればいいのでしょうか? また、ソースに何か悪い所があるのでしょうか? お助けください。 ちなみに下記がソースです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>アクセスカウンタ</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; if ( open ( FH , "count.txt")){ $cnt = <FH>; close( FH ); $cnt++; print"<CENTER>あなたは${cnt}人目の訪問者です。</CENTER>\n"; if ( open(FH, ">count.txt" )){ print FH $cnt; close(FH); } else { print "ファイルの書き込みオープンに失敗しました。\n"; } } else { print "ファイルの書き込みオープンに失敗しました。\n"; } print "</BODY>\n"; print "</HTML>\n"; __END__ ーーーーーーーーーーーーーーーーーーーーーーーーーー
- ベストアンサー
- Perl
- HTMLタグのエスケープ文字をタグに戻す方法
JavaのBufferedReaderクラスを使用して HTMLファイルを1行ずつ読み込んでまた、別のファイルに出力したところ HTMLファイル内では <br /> と表示されているところが出力ファイルでは <br /> というようにエスケープ文字で出力されてしまいました。 タグをそのまま出力したいのですがエスケープ文字で出力されないようにするためには どのようにすればよろしいでしょうか。
- ベストアンサー
- Java
- Perl文字列置き換えについて
今日は、PerlとCGIについて、お聞きしたいことがあります。 ~s///;で、文字列の置き換えが出来ますよね? 実行しても、変な数字しか出てこないのです。^^; つまずいてしまいました。 以下、コードです。(プロバイダはぷららです) 実行URL http://www9.plala.or.jp/mura001/form2.html =============================================== #!/usr/local/bin/perl -w require "jcode.pl"; require "cgi-lib.pl"; $host=$ENV{'REMOTE_HOST'}; #IP取得 $addr=$ENV{'REMOTE_ADDR'}; $bo=$ENV{'HTTP_UER_AGENT'}; $http=$ENV{'HTTP_HOST'}; #アクセス元URL $access=$ENV{'HTTP_REFERER'}; &ReadParse; #秒、分、時、日、年、月、曜日 ($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime; $mon++; $year += 1900; #曜日を日本語化 @week=('日','月','火','水','木','金','土'); $wday=$week[$wday]; #<input type>のnameを読み込む。 $name = $in{'han'}; $text = $in{'text'}; #日本語レコード &jcode'convert(*name,'euc'); &jcode'convert(*text,'euc'); #文字列置換 $name = ~s/</555/; #改行二つ書かないといけないみたい。 print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<title>テスト</title>\n"; print "</head>\n"; print "<body>\n"; print "テストです。<br>\n\n"; if($in{'han'} eq ''){ print "何も入力されていません。<br><br>\n"; exit(); } print "貴方が入力した名前は $name ですね。<br><br>\n\n"; print "$text<br><br>\n\n"; print $ENV{'PATH'},"<br><br>\n\n"; &file2(); print "書き込みリスト<br><br>\n\n"; &file(); print "</body>\n"; print "</html>\n"; sub file{ open(IN,"test.txt"); while(<IN>){ print; } close(IN); } sub file2{ open(IN,">>test.txt"); print IN "<hr>訪問者:$name $year年$mon月$mday日($wday)$hour:$min:$sec<br><br>\n\n"; print IN $text,"<br><br>"; print IN "IPアドレス:$addr<br><br>\n\n"; print IN "アクセス元:<a href=\"$access\">$access</a><br><br><hr>\n\n"; close(IN); } ========================== $name = ~s/</555/; が、 4294967295 にどうしてもなります。^^; (置き換え後の文字列を他のに変更しても必ず、 4294967295 になります!) 分かる方、いらっしゃいますか? あと、日本語の変換が出来ません。(汗) それと、ぷららのサーバがかなり重たいのですが、どうすれば宜しいでしょうか? ご迷惑をおかけいたしますが、どうか、宜しくお願いいたします。
- ベストアンサー
- その他(ソフトウェア)
- cgi出力での文字コードについて
下記のソースをsjisで作っていて、出力するdata.txtをuft-8で保存したいです。 どのようにすればよいでしょうか? 下記ソースでは、data.txtはsjisになっています。 尚、htmlはsjisなのでそのまま使用したいです。 どなたか教えてください。 宜しくお願いします。 ############################# #!/usr/local/bin/perl require 'jcode.pl'; require 'cgi-lib.pl'; &ReadParse; $datafile='data.txt'; ←これの保存のみutf-8にしたい open(FH,">$datafile"); print FH "$in{'name'}"; close(FH); rint "Content-type:text/html\n\n"; print "<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>"; print "<html><head></head><title>テスト</title><body>\n"; print "<center>入力完了しました。</center><hr /><br>\n"; print "<b>名前:</b>$in{'name'}<br>\n"; print "<hr />\n"; print "</body></html>";
- 締切済み
- CGI
- テキストファイルを読み込み出力で文字化け
まだパールを始めたばかりの初心者ですがよろしくお願いします。 現在cgiをPerlで記述します。 「|」区切りのテキストファイルを行ごとに読み込みsplitを利用して項目別に区切っています。 そしてそれをhtmlで項目別にテーブルに表示するというのをやっているのですがテキストファイル中に「鋼」という文字があると「・br>」という表示になり勝手にそこで区切られて以降違う項目になってしまいます。 それ以外はうまく表示出来ますし前後にスペースやメタ文字があったりとかではなく「鋼」を消すとうまく表示出来ます。 処理はこんな感じです。 ~テーブル内部~ open(IN, a.txt); @getline = <IN>; foreach $linedata (@getline) { chop $linedata; (@importdata)=split /\|/, $linedata; print "<tr>"; foreach(@importdata){ $_=~ s/\n//g; $_=~ s/\r//g; print "<td>".$_."<br></td>"; } print "</tr>"; 解決法方が分かる方、教えていただけないでしょうか? よろしくお願いします。
- ベストアンサー
- Perl
- perl の printでのファイルへの指示で
独学でmacでパールを勉強しています。 始めてからまだ1週間くらい。 教科書みながら、print命令でファイルハンドルに指示を出してるのですが、 書き込めはできるのですが、 ファイルが無い場合、 新規に自動でファイルが作成されるはずとの記載があったのですが、 何故か、自動でファイルが生成されません。 調べても、設定が必要等言われてますが、 mac自体も初心者でほとんどわかりません。 どのような設定にすればいいのでしょうか? また、ソースに何か悪い所があるのでしょうか? お助けください。 下記は実験用に作ったソースですが、 作動もしてるのですが、 新規に自動でファイルが作成されるはず が 何故か作成されません。 ちなみに localhost上で動かしてます。 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>test</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; open ( FH ,">tukuruzo.txt"); print FH "tukuruzo"; close ( FH ); print "</BODY>\n"; print "</HTML>\n"; __END__
- ベストアンサー
- Perl
お礼
どうもありがとうございました。 しっかりと表示されました。 最後の修飾子の"g"が大切みたいですね。 この辺りを頭の中に入れてなかったので為になりました。