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

Text_Wiki_Mediawiki を使って、wikipedia の本文をパースしています。
ですが困ったことに、二重角括弧( {{ }} ) の部分が HTML として残ってしまいます。
少し省略して書きますが、例えば以下のような部分です。

{{Infobox Language|name=日本語
|nativename={{lang|it|日本語}}
|pronunciation=/{{IPA|n?i?o??o}} ({{IPA|n?ippo??o}})/
|familycolor=#dddddd
|states=[[日本]]など(「[[#分布|分布]]」の節参照)
|region=[[東アジア]]など
}}

この角括弧及びその中に書かれた文字列を全て削除したく、
改行コードを削除後、PHP で
preg_replace( '/{{.+?}}/', '', $result );
と書きましたが角括弧が入れ子になっているためかうまくいきません。
そこで以下のいずれか、または分かる限りの方法を教えてください。

★入れ子になっている角括弧及び角括弧の中の文字列の削除方法。
方法は PHP または、Pear::Text_Wiki_Mediawiki のメソッドを使用した方法で。
★削除せずにPear::Text_Wiki_Mediawikiを使って、きちんと人間が閲覧できる
形式の HTML に変換する方法。(ルールを追加すればよい??)




●質問者: snaa1d_1
●カテゴリ:コンピュータ インターネット
✍キーワード:HTML IPA name Pear PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● i_kumagoro
●75ポイント ベストアンサー

正規表現の再帰を使えば

$result = preg_replace('/{{([^{}]|{[^{]|}[^}]|(?R))*?}}/', '', $result);

のような形でできると思います。再帰が使えない場合は

$old = '';
while (!($old === $result)) {
$old = $result;
$result = preg_replace('/{{([^{}]|{[^{]|}[^}])*?}}/', '', $old);
 }

のようなコードを書くといけると思います。

◎質問者からの返答

返信が遅くなり申し訳ありません。

ありがとうございます。無事、タグを除去することができました。

関連質問


●質問をもっと探す●



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