【发布时间】:2013-10-28 08:19:12
【问题描述】:
我想使用 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>';
}
有什么建议吗? :-) 谢谢!
【问题讨论】:
标签: php preg-replace