1

preg_match_all() 呼び出しの非常に単純な正規表現であると私が想像しているものに苦労しています。この [[link]] のようなものをリンクに変えるウィキメディア スタイルの内部リンク システムを模倣しようとしています。

[[foobar]] の例の文字列を検索し、「foobar」を返す正規表現を探しています。foob​​ar は本当にワイルドであるべきです。

私は次のことを試しました:

<?php
 $content = "Lorem ipsum dolor [[sit]] amet, consectetur adipiscing [[elit]].";
 $links = preg_match_all("[[*]]",$content,$matches);
 print_r($matches);
?>

私は何も得ていません。どんな助けでも大歓迎です。

4

4 に答える 4

2
preg_match_all("/\[\[([^\]]*?)\]\]/i",$content,$matches);
于 2013-04-23T13:54:05.010 に答える
1

[asでエスケープして\[から、式全体を un-greedy フラグと一致させる必要がありますU

$content = "Lorem ipsum dolor [[sit]] amet, consectetur adipiscing [[elit]].";
$links = preg_match_all("/\[\[(.*)]]/U",$content,$matches);
print_r($matches);

Array(
    [0] => Array (
        [0] => [[sit]]
        [1] => [[elit]]
    )
    [1] => Array (
        [0] => sit
        [1] => elit
    )
)

EDIT/U : ユーザー ridgerunner は、修飾子を使用することは悪い習慣と見なされると指摘しました。提案された一致コードは(.*?)、上に投稿されたものではなく、同じ同等の回答を生成します。

$links = preg_match_all("/\[\[(.*?)]]/",$content,$matches);
于 2013-04-23T13:54:21.137 に答える