- ベストアンサー
タグの不等号処理に関する問題
- perlを使用して掲示板を作成していますが、タグなどで使用する不等号を変換できません。
- 現在の処理では、不等号を正しく変換することができません。
- タグとして認識されてしまい表示に問題が生じます。
- みんなの回答 (7)
- 専門家の回答
関連するQ&A
- CGIで改行タグを改行コードに変換ってできますか?
CGIで改行タグを改行コードに変換ってできますか? $text =~ s/\r\n/<br>/g; $text =~ s/\r/<br>/g; $text =~ s/\n/<br>/g; で確認画面上で表示されるtextareaの文章は改行されるのですが、 届いたメールには<br>と表示されてしまって困ってます。 PHPでは変換できるみたいなのですが、perlでも出来るのでしょうか?
- ベストアンサー
- CGI
- 文字実体参照が勝手に変換されてしまう
簡単な問合せフォームを作成中に文字実体参照に変換した文字が、元に戻されてしまい困っています。簡単なサンプルを作成してみましたが、以下の様な状態です。 1.入力フォームを持ったHTMLに 「<>と<と>」 と入力し、xxx.cgiに渡します。 2.xxx.cgi内で入力文字列を取得し、文字実体参照に変換後<hidden>で値を保持、再度xxx.cgiに<hidden>の文字列を渡すようにします。この時点で入力値は 「<>と&lt;と&gt;」 となります。 3.再度xxx.cgiが呼ばれると、文字実体参照に変換する処理が行われる為、入力値が 「&lt;&gt;と&amp;lt;と&amp;gt;」 となるはずですが、 「<>と&lt;と&gt;」 となってしまいます(変換処理が行われているはずなのに変換されていない)不思議に思って変換前のCGIの引数を確認してみると、 「<>と<と>」 と文字実体参照が元に戻されてしまっています。 ちなみに文字実体参照の変換処理は$valueに対象の文字が入っているとして以下の方法で変換しています。 ---------- $value =~ s/&/&/g; $value =~ s/"/"/g; $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/\n/<BR>/g; ---------- こういった現象についてでも何か分かるようでしたら宜しくお願いします。
- ベストアンサー
- Perl
- テキストファイルの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"; }
- ベストアンサー
- Perl
- フォームで受け取った文章$strを
HTML形式に直すには $str=~s|\r\n|<br/>|sg; $str=~s|\n|<br/>|sg; $str=~s|\r|<br/>|sg; $str=~s|\s| |sg; $str=~s|<|<|g; $str=~s|>|>|g; $str=~s|&|&|g; でいいのでしょうか? 何か抜けや誤りはないでしょうか? \tの変換ができないのが残念ですが空白にしたつもりです
- ベストアンサー
- Perl
- perl cgiで正規表現が無限にマッチする
perl でcgiを作っています。フォームから受け取ったテキストから、正規表現を用いて、データを切り出そうと思っています。 以下のようなコードを書くと、マッチするのは一か所だけのはずなのに、無限回数マッチしてprintしつづけます。なにが間違っているのでしょうか。ご指導ください。 my $text = $in_data{'data_text'}; #フォームから受け取る $text =~ tr/+/ /; $text =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; # invalidation $text =~ s/[<>"'&\r\n]//g; $text =~ s/&/&/g; $text =~ s/</</g; $text =~ s/>/>/g; $text =~ s/"/"/g; $text =~ s/'/'/g; $text =~ s/\r\n/<br>/g; $text =~ s/\n/<br>/g; $text =~ s/\r/<br>/g; while ( $text =~ /Line(\d{1}):長さ:(\S+) km/){ print "Line$1: $2<br>"; }
- ベストアンサー
- Perl
- TEXTAREAの改行がうまくいきません。
自作で掲示版を作成している、初心者です。現在作成中の掲示版にTEXTAREAに入力し、LOG上では1行目<BR>2行目といった形で改行をBRに置き換えて保存していますが、その修正としてLOGからデータをとり改行状態で表示させたいのですが、 うまく改行されない状態です。下記にLOGより読み込み。タグを\rに置き換えて いますが、TEXTAREAに表示されなく、改行表示どころではありません。 いったいどうすればよいのでしょうか?ご教示をお願いします。 <CGI文> $wkaaa1 = $IXUSERINF{Enaiyo}; データを取得 $wkaaa =~ ¬ag1($wkaaa1); 変換(これがおかしい?) $mesbuff .= "<TR><TD nowrap ><TEXTAREA ROW=\"10\" COLS=\"48\" NAME=\"Enaiyo\" WRAP=\"soft\">$wkaaa </TEXTAREA></TD></TR>"; <sub> sub notag1 { local($_) = @_; s/&/&/g; s/"/"/g; s/</</g; s/>/>/g; s/<br>/\n/gi (これで <BR>を\n(改行)にしてるつもり return $_; }
- ベストアンサー
- CGI
- Windows98seから
Niftyのサーバに次のコードを含むパールをDLして 実行(アクセス)するとエラーになります $name =~ s/\&/\&/g; $name =~ s/</\</g; $name =~ s/>/\>/g;#error $name =~ s/\"/\"/g; #errorの行だけが問題なのですがどうすれば良いでしょうか? $name =~ s/\>/\>/g; にしてもエラーです
- ベストアンサー
- Perl
- MySQLにHTMLタグを挿入したい
PHPでつくった登録フォームよりhtmlタグを入力してそれをtext型のフィールドにhtmlタグごと入れたいのですが、うまくいいようにはいりません。 入力 <table border="0" width="80%"><tr>問1 磁気ディスク装置において,磁気ヘッドをある位置から目的の位置に移動させるのに要する時間を何と呼ぶか。</tr><tr> <td><input type="radio" name="1" value="ア">ア アクセス時間</td><td><input type="radio" name="1" value="イ">イ サーチ時間</td><td><input type="radio" name="1" value="ウ">ウ シーク時間</td><td><input type="radio" name="1" value="エ">エ データ転送時間</td></tr></table><br><hr width="80%"><br> フィールドの保存データ <table border="0&q uot; width="80%"><tr>問1 磁気ディスク装置において,磁気ヘッ ドをある位置から目的の位置に移動させるのに要する時間を何と呼ぶか。</tr>< ;tr> <td><input type="radio" name="1" value=&qu ot;ア">ア アクセス時間</td><td><input type="radio " name="1" value="イ">イ サーチ時間</td>< ;td><input type="radio" name="1" value="ウ"& gt;ウ シーク時間</td><td><input type="radio" name=&q uot;1" value="エ">エ データ転送時間</td></tr>&l t;/table><br><hr width="80%"><br> と入ってしまい データベースを参照してhtmlを表示したときには <table border="0" width="80%"><tr>問1 磁気ディスク装置において,磁気ヘッドをある位置から目的の位置に移動させるのに要する時間を何と呼ぶか。</tr><tr> <td><input type="radio" name="1" value="ア">ア アクセス時間</td><td><input type="radio" name="1" value="イ">イ サーチ時間</td><td><input type="radio" name="1" value="ウ">ウ シーク時間</td><td><input type="radio" name="1" value="エ">エ データ転送時間</td></tr></table><br><hr width="80%"><br> と表示されうまくいきません。
- 締切済み
- MySQL
- CGIで受け取った日本語文字列を正規表現で
perlでcgiを作っています。 テキストボックスに入れてもらった文字列から正規表現で数字を抽出します。 以下のように、組むと "USA"のような半角英数はただしくマッチしますが、 "アメリカ"や"ドル"などはマッチしません。簡単に解決する方法をお教えください。 my $text = $in_data{'data_text'}; $text =~ tr/+/ /; $text =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; $text =~ s/[<>"'&\r\n]//g; $text =~ s/&/&/g; $text =~ s/</</g; $text =~ s/>/>/g; $text =~ s/"/"/g; $text =~ s/'/'/g; $text =~ s/\r\n/<br>/g; $text =~ s/\n/<br>/g; $text =~ s/\r/<br>/g; if ($text =~ /USA (\d+) dollars/){ print "USA $1\n"; } if ($text =~ /アメリカ (\d+\.\d+) ドル/){ print "アメリカ $1\n"; } exit;
- ベストアンサー
- Perl
- 掲示板を作成する際に・・・
掲示板を作成する際、 文章を等間隔に表示させたいために、 文章を格納している$comに <pre>$com</pre> としてみました。 (大抵のスクリプトでは、「図/表モード」 の場合、<pre>$comment</pre>となっていたからです。) 確かにこれで文字は等間隔に表示されましたがこれだと メッセージ欄で空行(一行空けること)を入れた場合、 空行が無くなり、改行にしかなりません。 改行(とタグ)に対して以下のようにしているのですが・・・・ $com =~ s/\"/"/g; $com =~ s/</</g; $com =~ s/>/>/g; $com =~ s/<br>//ig; $com =~ s/\r\n/<br>/g; $com =~ s/\r/<br>/g; $com =~ s/\n/<br>/g; $com =~ s/\t/ /g; CGIとPERLはまだかじった程度の知識しかないので どうすればいいのかわからないので教えていただきたいのですが・・・。
- ベストアンサー
- CGI
お礼
有難うございました! その通りhiddenで渡してました。 てっきり出力はされていないので大丈夫だと思っていました。 しかしhiddenで受け渡してもダメだったのですね。 親切に有難うございました。