这不起作用。我希望它用ralph替换数组值的每个共同保险。相反,我得到$ data的未更改值。任何有关原因的见解?
$data="there is a dog in the car out back";
$bill= explode(' ',$data);
$bob[0]="dog";
$bob[1]="car";
$bob[2]="back";
$qq = preg_replace("|($bob)|Ui", "ralph" , htmlspecialchars($data));
echo $qq;
答案 0 :(得分:2)
如果在字符串上下文$bob
中插入类似"$bob"
的数组,那么它就会变为"Array"
。
至少你需要再次implode
作为替代清单:
$regex_bob = implode("|", $bob); // you should also apply preg_quote()
# $regex_bob = "dog|car|back|...";
然后使用更合理的正则表达式分隔符(因为|
用于替代):
$qq = preg_replace("~($regex_bob)~Ui", "ralph" , htmlspecialchars($data));
答案 1 :(得分:0)
以这种方式使用:
$data="there is a dog in the car out back";
$bill= explode(' ',$data);
$bob[0]="/dog/ui";
$bob[1]="/car/ui";
$bob[2]="/back/ui";
echo preg_replace($bob, "ralph", $data);
您必须传递一个正则表达式列表,您希望将其替换为字符串或替换列表。更多信息:http://php.net/manual/en/function.preg-replace.php