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

phpで、wikiの記法で書かれたテキストで[[?]]で括られたリンク内容を抽出するプログラムを書きたいのですが、下記のようなリンクが入れ子になったものでも抽出するように動作させるにはどうすれはよろしいでしょうか?

例:
今日も[[お日柄も[[良く]]いい[[天気]]]]ですね。

取得したい内容:
お日柄も[[良く]]いい[[天気]]


できればソース付きで回答して頂けると大変助かります。
よろしくお願いします。

●質問者: wankodon
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
●100ポイント ベストアンサー

一例です。

<?php
$a = '今日も[[お日柄も[[良く]]いい[[天気]]]]ですね。';
$b = preg_match_all('/(?:\[\[)(.+)(?:\]\])/', $a, $matches, PREG_SET_ORDER);
print_r($matches);

余談
最も内側のリンク(良くと天気)だけを取り出す例

<?php
$a = '今日も[[お[日柄]も[[良く]]いい[[天気]]]]ですね。';
$b = preg_match_all('/(?:\[\[)((?:(?!(?:\[\[)).)+?)(?:\]\])/', $a, $matches, PREG_SET_ORDER);
print_r($matches);

うぃんどさんのコメント
勘違いしてたようです。 ほんとに求めているのは下記ですよね? >|php| <?php $a = '今日は[[お日柄も[[良く]]いい[[天気]]]]ですね。昨日は[[台風で[天気]]は[[悪かった]]]]ですね。'; $b = preg_match_all('/\[(((?>[^][]+)|(?R))*)\]/x', $a, $matches); print_r($matches[0]); ||<

wankodonさんのコメント
最後のでバッチリです。まさか一行で済むとは思いませんでした。素晴らしい! 早速使わせて頂きます。有り難うございます。
関連質問

●質問をもっと探す●



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