为PHP数组中的每个项目添加后缀的正则表达式

4
我有一个 PHP 字符串数组,我想在每个字符串后面添加一个字符。下面是可以在每个数组元素前添加内容的正则表达式:
$prefixed_array = preg_filter('/^/', 'prefix_', $array);

但是,我需要添加后缀。

基本上,我想要从这个状态转变为:

$array = ["a", "b", "c", "d", "f"];

变成这样:

$array = ["a_M", "b_M", "c_M", "d_M", "f_M"];

我可以使用 foreach,但需要使用正则表达式(只需Regex)。


1
可能是重复的问题:PHP数组 - 在所有值中添加字符串 - Sahil Gulati
@SahilGulati:实际上,这个OP正则表达式解决方案是从那篇帖子中提取的。我认为OP对使用正则表达式的方式来向PHP数组添加后缀更感兴趣,如果有其他模式要求,则更为合适(不确定OP是否透露了现实问题的所有细节)。 - Wiktor Stribiżew
@SahilGulati:我只需要正则表达式。感谢Wiktor Stribiżew。 - Sami
2个回答

5

如果您想使用preg_filter与正则表达式一起使用,将^替换为$(字符串的结尾)(或\z - 字符串的最后),即可实现此操作:

$array = ["a", "b", "c", "d", "f"];
$suffixed_array = preg_filter('/$/', '_M', $array);
print_r($suffixed_array);

查看PHP演示

一种非正则表达式的方法是使用array_map,如下所示:

$suffixed_array = array_map(function ($s) {return $s . '_M';}, $array);

查看此PHP演示


我需要在值的开头和结尾添加前缀,那么如何通过 preg_filter 实现呢? - Muhammad Hassaan
1
@Hassaan 我认为你想要使用 preg_replace。像这样 $arr = preg_replace('/^.*$/', 'PREF_$0_SUFF', $arr); 或者 $arr = array_map(function ($s) {return 'prefix_' . $s . '_suffix';}, $arr) - Wiktor Stribiżew

0

使用array_map的另一种方法

$array = ["a", "b", "c", "d", "f"];

$array = array_map(function($k) {
    return $k . '_M';
}, $array);

print_r($array);

这实际上是我的答案的一部分。此外,我认为 OP 对解决问题的 正则表达式 方法感兴趣,否则,PHP 数组 - 将字符串添加到所有值 帖子就足够了。 - Wiktor Stribiżew
我在回答后看到了你的更新,很抱歉。 - hassan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接