私は現在このようなbbcodeを持っています
[caption=Some text goes here]image.jpg[/caption]
'caption ='の横にあるものに関係なく、image.jpgの値を取得できるように、phpのpreg_matchを使用したいと思います。誰かが私を助けることができますか?
生の正規表現:
]([^\]]+)[/caption]
preg_match("]([^\]]+)[/caption]", myString, $matches)
image.jpgは最初のグループになります。 $matches[1]
(PHPで正しくエスケープしたかどうかはわかりません)。
この正規表現を使用できます:
$str = '[caption=Some text goes here]image.jpg[/caption]';
if (preg_match('/^\[[^\]]+]([^[]+)/', $str, $arr))
echo "image: $arr[1]\n";
image: image.jpg
キャプションを含む完全なbbcodeタグを一致させたい場合は、
preg_match("/\[caption=(.+)\](.+)\[\/caption\]/", $myString, $matches);
これにより、次の$matches
配列になります。
Array
(
[0] => [caption=Some text goes here]image.jpg[/caption]
[1] => Some text goes here
[2] => image.jpg
)
RegExpは魔法ではありません。PHPには、BBCodeを処理するための事前に作成された拡張ライブラリがすでにあります。
車輪の再発明をしたり、自分自身を苦しめたりしないでください。