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=\"(.+?)\") は、そのブロックをオプションにすることです。オプションであるため、置換はスキップしているようです。どこか貪欲さに問題があると思いますが、整理できていません。
これを行う別の方法についてアイデアがあれば返信してください。