質問: PHPで文字列置換の際に`data[key1][3][key2][]`を`data.key1[3].key2`のように`\[[0-9]+\]`以外をドットつなぎに変換したい場合どのように書けばいいのでしょうか。 `\[[0-9]+\]`を否定先読みして`[`を`.`に変換して`]`を`''`に変換して最後に`.`でtrimすればできそうだと思っているのですが、うまく正規表現を書けずに困っています。 お力添えよろしくお願いします。
回答: 否定先読みしてtrimだとこんな感じになるのかなと思います。 ``` $str = 'data[key1][3][key2][]'; $str = preg_replace('/\[(?!\d+\])(.*?)\]/', '.$1', $str); $str = rtrim($str, '.'); echo $str; ```