我试图替换包含特定字符串的字符串,该字符串之间包含一个动态数字。我尝试了preg_match_all,但它给了我空值
以下是我实际寻找的所有细节:
在我的长文本中,有一些值包含以下内容 [_wc_acof_(some dynamic number)]
,即:[[u wc\u acof\u 6]我要将它们转换为 $postmeta['_wc_acof_14'][0]
在同一长文本中可以有多个。
我想用这个逻辑来解释一下:
1-首先,我得到所有的数字 [_wc_acof_
并使用preg_match_all将它们保存在数组中,如下所示:在字符串php regex之后获取数字
2-然后我运行一个foreach循环,并使用该数字设置模式和替换的数组,即:
foreach ($allMatchNumbers as $MatchNumber){
$key = "[_wc_acof_" . $MatchNumber. "]";
$patterns[] = $key;
$replacements[] = $postmeta[$key][0];
}
3-那么我就用这个来代替 echo preg_replace($patterns, $replacements, $string);
但我无法得到preg_match_所有它给我空,我在下面尝试
preg_match_all('/[_wc_acof_/',$string,$allMatchNumbers );
请帮忙?我不确定preg_grep是否比这更好?
1条答案
按热度按时间brjng4g31#
似乎您希望分阶段处理输入,首先获取特定词汇上下文中的所有数字,然后使用某种查找技术修改用户输入。
第一步可以按如下方式实现:
提取中间一个或多个数字的所有序列的
[_wc_acof_
及]
进入第1组(您可以通过$matches[1]
).然后,你可以填写表格
$replacements
使用这些值的数组。接下来,您可以使用
请参阅php演示:
输出: