PHP :如何用给定的确切值替换字符串中的数字

PHP : how to replace numbers in a string with the exact given value

我有 2 个数组和一个字符串:

$attribute_ids = array(200,201);
$attribute_names = array("David","Rimma");
$string = "200 2006-2009 boy, 201 girl";
$string = str_replace($attribute_ids, $attribute_names, $string);

输出为“David David6-David9 男孩,Rimma 女孩”

预期是“David 2006-2009 男孩,Rimma 女孩”

问题是当数组包含 200 且字符串包含 2000 时 str_replace 替换 2000 中的字符串 200。

我正在尝试仅替换数组“$attribute_ids”中给出的完全相同的字符串。

我试过preg_replace但是没用。

区分整个单词和部分单词听起来像是正则表达式的任务,所以这是我的看法(具体来说:添加正则表达式单词边界 \b模式):

$attribute_ids = array(200,201);
$attribute_names = array("David","Rimma");
$string = "200 2006-2009 boy, 201 girl";

echo preg_replace(
    array_map(fn($item) => "/\b$item\b/", $attribute_ids),
    $attribute_names, 
    $string
); // David 2006-2009 boy, Rimma girl

我不确定映射应该在 array_map() 调用的外部还是内部完成。就像现在一样,代码有点局限于整个单词模式。但另一方面,如果这对手头的任务没问题,或者模式数组很大,那么它可能会有用:)..