0

我试图用这样的方式替换一个巨大的字符串中的几个单词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替换整个,而是仅替换为使其成为. 我应该怎么做才能同时替换$ sigh 的?谢谢。$contacts-firstname$Lindacontacts-firstnameLinda$Linda$

4

2 回答 2

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]. 但是,如果您真的需要在更复杂的模式中使用文字搜索字符串数组,那么这只是一个很好的了解。

于 2012-12-11T13:07:48.493 回答
1

尝试str_replace而不是preg_replace更快更适合您的用例

于 2012-12-11T13:07:01.300 回答