0

PHP には、やりたいことをしていない正規表現が少しあります。

私が欲しいもの:

[segment type="segment_name"]more text here[/segment]

次のように変更されます:

[segmentclass='segment_name segment']more text here[/segment]

と:

[segment]more text here[/segment]

次のように変更されます:

[segmentclass=' segment']more text here[/segment]

ここに私が持っているものがあります:

$pattern = '/(\[segment.*?)(type=\"(.+?)\")?(.*?\[\/segment\])/is';
$replacement = '$1class=\'$3 segment\'$4';
$content = preg_replace($pattern, $replacement, $content);

誰にもアイデアはありますか?? after (type=\"(.+?)\") は、そのブロックをオプションにすることです。オプションであるため、置換はスキップしているようです。どこか貪欲さに問題があると思いますが、整理できていません。

これを行う別の方法についてアイデアがあれば返信してください。

4

1 に答える 1