我正在尝试用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
一样。我该怎么做才能取代 $ 叹息呢?
感谢。
答案 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
更快,更适合您的用例