2

preg_replace のドキュメントでは、インデックス付き配列を使用して複数の文字列を置き換えることができると書かれています。連想配列でこれを行いたいのですが、うまくいかないようです。

これが実際に機能しないかどうかは誰にもわかりませんか?

4

3 に答える 3

9

キーまたはキーと値に対してこれを行いますか、それとも単にキーを保持して値を処理しますか? いずれにせよ、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;
}
于 2010-01-01T03:10:53.780 に答える
0

私がこれを正しく理解していれば、あなたが望むのは次のとおりです。

$patterns = array_keys($input);
$replacements = array_values($input);
$output = preg_replace($patterns,$replacements,$string);
于 2010-01-01T03:17:36.637 に答える