我想用条件如下的单词替换字符串的一部分:
"string1string" => "stringAstring"
"string2string" => "stringBstring"
"string3string" => "stringCstring"
我为第一个字符串选择此模式:
/(.*)(1|2|3)(.*)/
所以我想通过1,2,3
函数将A,B,C
替换为preg_replace()
。
请帮助我做到这一点。
修改:首次尝试
我使用下面的代码来实现
preg_replace("/(.*)(1|2|3)(.*)/", "$1$2$3", $string);
“ string1string”的结果为:
string1string
我的目标是,如果$2
是1
,那么用A
替换,或者2
用B
替换,还是3
用{{ 1}}
答案 0 :(得分:1)
我将总结您的问题。您需要用多个字符替换多个数字
如果有数组,则应使用循环并在循环中添加以下代码,并用变量替换string1string
因此,您应将str_replace
与array
一起使用
$string = str_replace(array('1', '2', '3'), array('A', 'B', 'C'), 'string1string');
print_r($string);
$string = str_replace(array('1', '2', '3'), array('A', 'B', 'C'), 'string2string');
print_r($string);
$string = str_replace(array('1', '2', '3'), array('A', 'B', 'C'), 'string3string');
print_r($string);
答案 1 :(得分:0)
您可以使用preg_replace_callback()
代替它在正则表达式匹配中具有回调功能。在回调函数中,匹配项存储在数组名称$matches
中。
Alos ["A", "B", "C"][$matches[2]-1]
将1|2|3
转换为A|B|C
。
$newString = preg_replace_callback("/(.*)(1|2|3)(.*)/", function($matches){
return $matches[1].["A", "B", "C"][$matches[2]-1].$matches[3];
}, $string);
在demo中查看结果