3 回答

TA贡献1772条经验 获得超5个赞
使用preg_replace_callback函数,您可以在没有任何循环的情况下一步完成:
$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
代码说明:
'/\b(' . implode("|", array_keys($states)) . ')\b/'
:这里我们正在使用从 array 获取的数组键构建一个正则表达式$states
。会变成:/\b(AR|CA|NY)\b/
这里。请注意,此正则表达式中的第 1 组中正在捕获状态缩写。$m[1] . ' (' . $states[$m[1]] . ')'
在州缩写前面附加州名

TA贡献1785条经验 获得超8个赞
对数组格式稍作改动,就可以使用strtr()数组...
$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贡献1824条经验 获得超8个赞
您不必拆分单词,只需遍历状态并将短状态替换为新文本。
这应该做的工作:
$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 关注
- 88 浏览
添加回答
举报