preg_replace を使用して、件名のトークンを値に置き換えたいと思います。件名のトークンは疑問符、または名前付きパラメーターです。(PDOスタイルを考えてください)
値の1つに疑問符自体が含まれるまで、私の現在のアプローチはうまく機能します。(または名前付き変数。) その場合、システム全体がおかしくなります: 置き換えられた値の疑問符は、それ自体が次の値に置き換えられます。
基本的に、$values 配列で見つかったものは何も置き換えたくありません。したがって、preg_replace の「再帰的」な性質をやめたいと思います。
それを回避する最善の方法は何ですか?
孤立した例:
<?php
// Values that will be replaced
$values = array (1, 2, 'bla bla ? bla', 'NULL', 4, 'woop woop', 'waap waap');
// Keys used for replacing
$keys = array ('/[?]/', '/[?]/', '/[?]/', '/[?]/', '/[?]/', '/:testvar1/', '/:testvar2/');
// Original text
$original = ":testvar1, ?, ?, ?, ?, ?, :testvar2";
// Actual replaced text
$actual = preg_replace ($keys, $values, $original, 1);
// Expected replaced text
$expected = "woop woop, 1, 2, bla bla ? bla, NULL, 4, waap waap";
echo '<pre>';
echo "Actual:\n";
echo $actual . "\n\n";
echo "Expected:\n";
echo $expected . "\n\n";
echo "Result:\n";
if ($actual == $expected)
{
echo '<span style="color: green;">Success!</span>';
}
else
{
echo '<span style="color: red;">Failure!</span>';
}
任意のヒント?:-) ありがとう!