C#でPHPのstrip_tagsの機能が必要なのですが、.NETで同一の機能があれば教えて下さい。無い場合は自作のアイデア(正規表現など)を教えて頂ければと思います。

回答の条件
  • 1人2回まで
  • 登録:2006/04/13 14:35:06
  • 終了:2006/04/17 09:26:54

回答(2件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数752006/04/13 19:39:17

ポイント50pt

同一の機能はないようですが、近い機能を実現するために関数を作っている人は沢山いるようです。

"C# HTML remove tags"などの語句で検索すると良いでしょう。

色々な言語でstrip_tagsに近い機能を表現しているページがありました。

public static string StripHTML(String TexteHTML) 
{ 
	return System.Text.RegularExpressions.Regex.Replace(TexteHTML, "(<[^>]+>)", ""); 
}

別のサンプルです。

public string Strip(string text)
{
    return Regex.Replace(text, @"<(.|\n)*?>", string.Empty);
}

もうちょっと凝ったことをやっているサンプルもありました。

ソースが長いので以下のサイトでご確認ください。

一部のタグを許可させるサンプルもあります。

(正規表現に関してのみ触れられているので、その他のサンプルの正規表現部分を置き換える形で使うと良いはずです。)

参考になると幸いです。

id:cloned

ありがとうございます。同一の機能がないのは残念ですが、とても参考になりました。

2006/04/14 09:23:25
id:bonlife No.2

回答回数421ベストアンサー獲得回数752006/04/14 10:10:38

ポイント50pt

上記の件ですが、どのようなことを実現したいのか、によりますが、基本的にはご紹介したサンプルでstrip_tagsで引数を1つ与えた場合と同じ動作をするはずです。

許可したいタグがある場合、場面によって許可したいタグが変わることがないのであれば、最後に紹介した正規表現のサンプルを参考にして書き換えることで特定のタグを許可させることができます。

場面によって許可したいタグが異なる場合、strip_tagsの第2引数のallowable_tagsを実装しなければいけなくなりますが、それほど難しくないはずです。

C#を使ったことがないので詳しい書き方は分かりませんが、独自に定義する関数で2つ目の引数を受け入れる設定にし、2つ目の引数の内容を元に正規表現を生成すれば良いはずです。

<b><br>

という第2引数があった場合、それを

b|/b|br|/br

に変換し、正規表現の一部に挿入するイメージです。

お時間ある時に確認してみてください。

参考になると幸いです。

id:cloned

ありがとうございます。これでC#版のstrip_tagsが実装できそうです。実現するだけならそれほど難しくないのですが、それだけに色々な方法を探していたので、とても参考になりました。

2006/04/14 11:11:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません