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()
调用的外部还是内部完成。就像现在一样,代码有点局限于整个单词模式。但另一方面,如果这对手头的任务没问题,或者模式数组很大,那么它可能会有用:)..
我有 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()
调用的外部还是内部完成。就像现在一样,代码有点局限于整个单词模式。但另一方面,如果这对手头的任务没问题,或者模式数组很大,那么它可能会有用:)..