preg_replace のドキュメントでは、インデックス付き配列を使用して複数の文字列を置き換えることができると書かれています。連想配列でこれを行いたいのですが、うまくいかないようです。
これが実際に機能しないかどうかは誰にもわかりませんか?
preg_replace のドキュメントでは、インデックス付き配列を使用して複数の文字列を置き換えることができると書かれています。連想配列でこれを行いたいのですが、うまくいかないようです。
これが実際に機能しないかどうかは誰にもわかりませんか?
キーまたはキーと値に対してこれを行いますか、それとも単にキーを保持して値を処理しますか? いずれにせよ、array_combine()
とarray_keys()
をarray_values()
組み合わせることで実現できます。
キーについて:
$keys = array_keys($input);
$values = array_values($input);
$result = preg_replace($pattern, $replacement, $keys);
$output = array_combine($result, $values);
キーと値について:
$keys = array_keys($input);
$values = array_values($input);
$newKeys = preg_replace($pattern, $replacement, $keys);
$newValues = preg_replace($pattern, $replacement, $values);
$output = array_combine($newKeys, $newValues);
キーを保持する値について:
$keys = array_keys($input);
$values = array_values($input);
$result = preg_replace($pattern, $replacement, $values);
$output = array_combine($keys, $result);
これらはすべて、次のような関数を想定しています。
function regex_replace(array $input, $pattern, $replacement) {
...
return $output;
}
私がこれを正しく理解していれば、あなたが望むのは次のとおりです。
$patterns = array_keys($input);
$replacements = array_values($input);
$output = preg_replace($patterns,$replacements,$string);