-PR-
解決
済み

Perlでの文字列置換に関して

  • 困ってます
  • 質問No.50275
  • 閲覧数408
  • ありがとう数10
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 91% (11/12)

Perlでの文字列置換についてうかがいます。

文字列中からHTMLタグを排除しようと思うのですが、
タグ部分のみをうまく指定することができず、困っています。
どうか御知恵をお貸し下さい。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル12

ベストアンサー率 57% (232/402)

s/<(.*?)>//g;

で消えませんか?

また掲示板などでHTMLタグを無効化するのであれば、

s/</&lt;/g;
s/>/&gt;/g;

と変換して、HTMLタグをそのまま画面に表示させてしまう手もあります。
お礼コメント
Atalia

お礼率 91% (11/12)

ありがとうございました。
ちょっと余計なことをし過ぎていたようで、
仰る方法でうまくいきました。
投稿日時 - 2001-03-13 19:42:51
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.2
レベル12

ベストアンサー率 57% (232/402)

何か半角文字だと見にくくなってしまったので、置換の内容だけ全角で書き直しますね。 上からそれぞれ s/<(.*?)>//g; s/</&lt;/g; s/>/&gt;/g; です。
何か半角文字だと見にくくなってしまったので、置換の内容だけ全角で書き直しますね。

上からそれぞれ
s/<(.*?)>//g;
s/</&lt;/g;
s/>/&gt;/g;
です。
  • 回答No.3
レベル9

ベストアンサー率 35% (27/77)

みなさんが書かれている方法で普通は問題ないですが、厳密にいうと <!-- <br> -->  →  --> <foo bar=">"> → "> なんてことになるので、また別の方法があります。 詳しくは下記URLを参照してください。 勉強になるページです。激しくオススメ! ...続きを読む
みなさんが書かれている方法で普通は問題ないですが、厳密にいうと
<!-- <br> -->  →  -->
<foo bar=">"> → ">
なんてことになるので、また別の方法があります。

詳しくは下記URLを参照してください。
勉強になるページです。激しくオススメ!
お礼コメント
Atalia

お礼率 91% (11/12)

ありがとうございました。
ご紹介のページはとても参考になります。
投稿日時 - 2001-03-13 19:43:59
  • 回答No.4
レベル9

ベストアンサー率 29% (28/95)

複数行に対処したいなら、$scalarなどに入力データを全部つなげておいて、s/<(.*?)>//g; でいいとおもいます。 あとはsplitで分解すれば、問題ないかと。 エンティティの無効化は、 %ent = ('&' => 'amp', '<' => 'lt', ' ...続きを読む
複数行に対処したいなら、$scalarなどに入力データを全部つなげておいて、s/<(.*?)>//g; でいいとおもいます。
あとはsplitで分解すれば、問題ないかと。

エンティティの無効化は、
%ent = ('&' => 'amp', '<' => 'lt', '>' => 'gt', '"' => 'quot');
と指定して、
s/([&<>"])/&$ent{$1};/g;
ってやると、ちょっとかっこいいですよ。重たいですけど。
お礼コメント
Atalia

お礼率 91% (11/12)

ありがとうございました。
エンティティの無効化は目から鱗でした。
投稿日時 - 2001-03-13 19:45:30
  • 回答No.5

えーーー、同じようなことをした経験あります。 $data = ~s#\"##g; $data = ~s#<.*>##g; 一部のタグを消したいときは $data = ~s#</p>##g; $dataはタグが入っています。  / ではなく # を使ったのは</p>を消したいときに \を付けるのがめんどうだったためです。 最後のgは$data ...続きを読む
えーーー、同じようなことをした経験あります。
$data = ~s#\"##g;
$data = ~s#<.*>##g;
一部のタグを消したいときは
$data = ~s#</p>##g;
$dataはタグが入っています。

 / ではなく # を使ったのは</p>を消したいときに
\を付けるのがめんどうだったためです。
最後のgは$data内の<p>を全て消すという意味。
一行目で全ての、ダブルクォーテーション全部消去しました
また、ソースが大文字か小文字か分からないので
trコマンドを使って全て小文字にあらかじめしておきます
お礼コメント
Atalia

お礼率 91% (11/12)

ありがとうございました。
投稿日時 - 2001-03-13 19:46:49
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ