我正在尝试使用php替换字符串中的单词。 在这里,我想用$ replacearray数组中的“new program”和“test program”替换“test php”和“java test”。 注意:这里我需要使用$ searchstring数组搜索字符串中的单词,如果匹配发现它应该替换为$ replacearray
输出应为:这是新程序和测试程序
这里如果我的searchstring包含数字,我也想爆炸它并分离数字和字符串,并希望用爆炸的字符串替换$ string。我使用的分隔符是:in $ searchstring
这是我的代码
<?php
$string = "This is test php and java test";
$searchstring = array('1:test php', '2:java test');
$replacearray = array('new program', 'test program');
$replacearraycount = count($replacearray);
$searchstringcount = count($searchstring);
for($i = 0; $i < $replacearraycount; $i++) {
for($i = 0; $i < $searchstringcount; $i++) {
$string = preg_replace("/".$searchstring[$i]."/", $replacearray[$i], $string, 1);
}
}
echo $string;
?>
这就是我试图通过爆炸$ searchstring
<?php
$string = "This is test php and java test";
$searchstring = array('1:test php', '2:java test');
$replacearray = array('test coding','test program');
$replacearraycount = count($replacearray);
$searchstringcount = count($searchstring);
foreach ($searchstring as &$value) {
$arrid = array();
$arrname = array();
foreach (explode(', ', $value) as $el) {
$ret = explode(':', $el);
$arrid[$ret[0]] = $ret[0];
$arrname[$ret[0]] = $ret[1];
}
$valueid = $arrid;
$name = $arrname;
$finalsearchstring=array();
array_push($finalsearchstring,$name);
}
for($i = 0; $i < $replacearraycount; $i++) {
$string = preg_replace("/".$finalsearchstring[$i]."/", $replacearray[$i], $string, 1);
}
echo $string;
?>
答案 0 :(得分:3)
如果我关注你的问题,你需要一个for循环而不是两个,你的数组索引应该是$i
而不仅仅是i
-
for($i = 0; $i < $replacearraycount; $i++) {
$string = preg_replace("/".$searchstring[$i]."/", $replacearray[$i], $string, 1);
}