人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: takeru-c
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTML Perl タグ テキスト テスト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●15ポイント

ご質問は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つ地道に潰していくしかないと思います。

◎質問者からの返答

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

使用言語はperlです。

質問の意図としては、

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

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

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

その際、

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

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

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

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

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


2 ● hijk05
●30ポイント

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

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

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

◎質問者からの返答

ありがとうございます。

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


3 ● pahoo
●50ポイント ベストアンサー

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


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

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

◎質問者からの返答

ありがとうございます。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ