Proxomitron フィルター作成スレッド Part7 at SOFTWARE
[2ch|▼Menu]
191:think ◆MM0nnAOCiQ
07/07/28 13:31:27 yRNc7ktc0
>>185=>>187なんでしょうか?
基本的に、>186氏の指摘通りだと思いますが、一行単位or段落単位で消去するとなると、行/段落の定義をしっかり考えないと期待通りに動作しないと思います。

ReplaceStr は >*< の範囲にマッチさせることで、文章にマッチさせています。
タグのチェックを行っていないので、以下のHTMLソースで hogehoge を消去させると、こうなります。

<p>...<strong>hogehoge</strong><br />...</p>
 ↓
<p>...<strong></strong><br />...</p>

行を削除するためには「<p> 〜 <br />」にマッチさせる必要があります。

[Patterns]
Name = "Remove inline NGWord [2007/07/28] test1"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 512
Match = "<p>([^<]+)\#(<(^br />|/p)[^>]+>([^<]+)\#)+"
"(<br /+>|(^(^</p>)))"
"$SET(Temp=\@)$TST(Temp=*hogehoge*)"
Replace = "<p>"

# このフィルタは日本語を考慮していません。(RelaceStrを参考にしてください)
# <div>, <dd> などのブロックレベル要素による改行に対応していません。
#
# <p>...<strong>hogehoge</strong>...<br /> ...hogehoge...<br /></p>
#
# のような、hogehoge を2行連続で繰り返すテキストでは、2行目にマッチしません。(開始タグを見つけられないため)
# おそらく段落単位で消去する方が対応が楽だと思われますが、きちんとマークアップされていないサイトだと、余計なところまで消去してしまう可能性があります。# (p要素の内部に別のブロックレベル要素があると厄介です)


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4740日前に更新/352 KB
担当:undef