3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
使用preg_replace_callback函數(shù),您可以在沒(méi)有任何循環(huán)的情況下一步完成:
$repl = preg_replace_callback('/\b(' . implode("|", array_keys($states)) . ')\b/',
function ($m) use($states) { return $m[1] . ' (' . $states[$m[1]] . ')'; }, $input);
//=> Lorem ipsum CA (California) dolor NY (New York) sit any foo bar
代碼說(shuō)明:
'/\b(' . implode("|", array_keys($states)) . ')\b/'
:這里我們正在使用從 array 獲取的數(shù)組鍵構(gòu)建一個(gè)正則表達(dá)式$states
。會(huì)變成:/\b(AR|CA|NY)\b/
這里。請(qǐng)注意,此正則表達(dá)式中的第 1 組中正在捕獲狀態(tài)縮寫(xiě)。$m[1] . ' (' . $states[$m[1]] . ')'
在州縮寫(xiě)前面附加州名

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
對(duì)數(shù)組格式稍作改動(dòng),就可以使用strtr()數(shù)組...
$states = array(
"AR" => "AR (Arkansas)",
"CA" => "CA (California)",
"NY" => "NY (New York)"
);
$text = "Lorem ipsum CA dolor NY sit foo bar";
echo strtr( $text, $states);
給...
Lorem ipsum CA (California) dolor NT (New York) sit foo bar

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
您不必拆分單詞,只需遍歷狀態(tài)并將短狀態(tài)替換為新文本。
這應(yīng)該做的工作:
$states = array(
"AR" => "Arkansas",
"CA" => "California",
"NY" => "New York"
);
$input = "Lorem ipsum CA dolor NY sit any foo bar";
foreach($states as $shortState=>$longState){
$input = str_replace($shortState, $shortState." (".$longState.")", $input);
}
echo $input;
// output: Lorem ipsum CA (California) dolor NY (New York) sit any foo bar
- 3 回答
- 0 關(guān)注
- 107 瀏覽
添加回答
舉報(bào)