preg_replace和一个不工作的数组

时间:2011-11-30 15:56:03

标签: php arrays preg-replace

这不起作用。我希望它用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;

2 个答案:

答案 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