我想使用 preg_replace 将主题中的标记替换为值。主题中的标记是问号或命名参数。(想想 PDO 风格)
我目前的方法工作正常,直到其中一个值本身包含问号。(或命名变量。)在这种情况下,整个系统都会变坏:替换值中的问号本身会被下一个值替换。
基本上,我不想替换 $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>';
}
有小费吗?:-) 谢谢!