正则表达式问题:从数组的所有元素中替换第一个和最后一个$字符

时间:2012-12-11 13:01:42

标签: php regex

我正在尝试用preg_replace()替换大字符串中的几个字 像这样使用它:

preg_replace($match[0], $variable_value_array, $form_body)

此处$match[0]是一个数组,其值为:

$contacts-firstname$
$contacts-lastname$
$contacts-mobile$
$leads-leadstatus$
$leads-noofemployees$

$variable_value_array也是一个数组,其值如下:

Linda
William
(091) 115-9385
Value Not Present
Value Not Present

$form_body非常长string

该函数正在替换$form_body的值,但不是用 $contacts-firstname$ 替换整个Linda,而是仅替换 {{1} contacts-firstname ,使其像Linda一样。我该怎么做才能取代 $ 叹息呢? 感谢。

2 个答案:

答案 0 :(得分:3)

那是因为$被解释为你的正则表达式的分隔符。您应该使用简单的str_replace代替。签名完全相同:

str_replace($match[0], $variable_value_array, $form_body);

如果你非常想使用preg_replace,你需要做两件事。首先,您需要将每个数组元素包装在显式分隔符中(/是一种标准选择)。而且你需要通过preg_quote运行每个数组元素,否则$将被视为字符串结尾锚点:

$patterns = array();
foreach($match[0] as $value)
    $patterns[] = '/'.preg_quote($value, '/').'/';

然后使用$patterns代替$match[0]。但是,如果您真的需要在更复杂的模式中使用文字搜索字符串数组,那么这只是一个很好的知识。

答案 1 :(得分:1)

尝试使用str_replace代替preg_replace更快,更适合您的用例