我有一個字符串中有相同的字符多次,我想用數組中的不同字符串替換此字符的每個出現。即就像在準備好的發言:用不同的字符串替換幾次相同的字符
字符串:"SELECT * FROM x WHERE a = ? AND b = ?"
陣:['alpha', 'beta']
結果:"SELECT * FROM x WHERE a = alpha AND b = beta"
我有一個字符串中有相同的字符多次,我想用數組中的不同字符串替換此字符的每個出現。即就像在準備好的發言:用不同的字符串替換幾次相同的字符
字符串:"SELECT * FROM x WHERE a = ? AND b = ?"
陣:['alpha', 'beta']
結果:"SELECT * FROM x WHERE a = alpha AND b = beta"
試試這個:
$str = "SELECT * FROM x WHERE a = ? AND b = ?";
$arr = array("alpha", "beta");
foreach ($arr as $s)
$str = preg_replace("/\?/", $s, $str, 1);
echo $str;
見here。第四個參數將每次運行的最大替代次數限制爲一次而不是無限次。
無正則表達式函數(作爲獎勵,也允許替換任意字符串,而不是隻是字符):
function replacement($string, $search, array $replacements) {
$pos = 0;
while (($f = strpos($string, $search, $pos)) !== FALSE) {
$r = array_shift($replacements);
$string = substr($string, 0, $f) . $r .
substr($string, $f + strlen($search));
$pos = $f + strlen($r);
}
return $string;
}
例子:
echo replacement("sf sdf aaasdf sdsaaaaggg", "aa",
array("alpha", "beta", "gammma"));
給出:
sf sdf alphaasdf sdsbetagammmaggg
您正在使用什麼數據庫接口?它可能具有內置的能力(它可能更安全)。 – strager 2010-08-03 03:03:58
是的,當然數據庫接口有這個通常內置的,但我只是想要類似SQL的語法作爲例子,因爲大多數人已經知道它。在這裏已經有一些很好的解決方案,我只是想弄清楚哪一個最適合我。 – Matt 2010-08-03 13:53:28