perlについて質問です。

<b>テスト<font color="#FF0000">0123456789
などのように、HTMLタグの閉じ忘れたテキストを
<b>テスト<font color="#FF0000">0123456789</font></b>
のように閉じタグを保管するにはどうしたらよいでしょうか。

よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:2009/04/12 13:10:28
  • 終了:2009/04/13 09:50:34

ベストアンサー

id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332009/04/12 18:25:27

ポイント50pt

#1で回答した者です。状況は了解しました。


タグを1つ1つに分解して、正規表現で補完するのが手っ取り早いでしょう。

具体的なコードは、「正規表現でタグを処理」を参考にして下さい。許可タグの処理も同時にできて便利だと思います。

id:takeru-c

ありがとうございます。

リンク先を参考にうまくできました!!

さらに許可タグの処理も出来たので、言うことなしです!

2009/04/13 03:34:41

その他の回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/04/12 13:24:43

ポイント15pt

ご質問はPerlと関係ないような気がしますが‥‥。


まず、タグの閉じ忘れを自動的に補間する仕組みをお求めでしたら、原理的に、それはできません。

たとえば以下の場合――

(正解)<b>テスト<font color="#FF0000">0123456789</font>ABC</b>
(現状)<b>テスト<font color="#FF0000">0123456789ABC

(現状)のタグの閉じ忘れを補完したくても "9" と "A" の間に </font> を入れるべきだということは、コンピュータはもちろんのこと、人間にも分からないからです。


代替案として、タグ毎の閉じ忘れ数をカウントしてくれる Web アプリ「Page Scanner Tool @ Jhousemedia.com」をご紹介します。

これで閉じ忘れになっているタグを洗い出して、あとは1つ1つ地道に潰していくしかないと思います。

id:takeru-c

すみません。質問内容を省きすぎてしまいました。

使用言語はperlです。

質問の意図としては、

<b>テスト<font color="#FF0000">0123456789</font></b>.....

というテキストがDBに保存されていて、

一覧画面に表示するものは、文字数制限されていて、○○文字、でトリムして表示します。

その際、

<b>テスト<font color="#FF0000">0123456789

のようにHTMLタグが途切れてしまった場合に、閉じタグを補完できないかな、と思ったのでした。

ちなみに、<font colo などのようにHTMLタグの途中で途切れてしまったものは、取り除く処理を入れています。

一覧画面からは、HTMLタグを取り除くという選択肢もありますが、

今回の要望としては、HTMLタグを許可する、というものなので、できればHTMLタグを補完したいです。

2009/04/12 13:55:04
id:hijk05 No.2

hijk05回答回数1307ベストアンサー獲得回数232009/04/12 18:22:11

ポイント30pt

HTMLの閉じ忘れた htmlタグ を補完する HTML::TreeBuilder

http://logic.stepserver.jp/data/archives/531.html

こういうライブラリをつかうとお手軽に実装できますよ。

id:takeru-c

ありがとうございます。

HTML::TreeBuilderで試してみましたが、全角文字があると挙動が難しく、いろいろ試したのですが、断念しました。

2009/04/13 03:32:34
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332009/04/12 18:25:27ここでベストアンサー

ポイント50pt

#1で回答した者です。状況は了解しました。


タグを1つ1つに分解して、正規表現で補完するのが手っ取り早いでしょう。

具体的なコードは、「正規表現でタグを処理」を参考にして下さい。許可タグの処理も同時にできて便利だと思います。

id:takeru-c

ありがとうございます。

リンク先を参考にうまくできました!!

さらに許可タグの処理も出来たので、言うことなしです!

2009/04/13 03:34:41
  • id:kn1967
    環境によっては HTML::TreeBuilder が使えるかもしれないけど
    使用を許可するタグと強制的に削除するタグなどもあると思うから
    自作するほうがベターでしょうね。

    10行程度(もう少しかな?)で出来る事なのでサンプルを作ってもかまわないけど
    ひとまずpahoo氏からの回答を待つとしましょうか・・・。

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

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

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

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