结合使用 str_replace 和 ut8_decode

Using str_replace in combination with ut8_decode

首先,我还没有 php 经验,所以我有这段代码不是我自己写的。

.utf8_decode($var['ciudad']).

它return是一个城市的值,这是一个数字,66170或66001。

我需要的不是 return 号码而是城市名称。所以假设 return 是“66170”,它应该显示“伦敦”而不是数字“66170”。

现在我知道我应该使用 str_replace。但这就是我卡住的地方,这段代码中有 utf8_decode ,这与我的代码混淆了。 (或者只是让我感到困惑)我的想法或多或少是这样的:

$ciudad= .utf8_decode(str_replace('66170 ', 'London',($var['ciudad']).'))

你的想法是对的。您唯一错过的是您首先需要对其进行解码:

$ciudad = str_replace('66170', 'London', utf8_decode($var['ciudad']));

如果你有很多城市代码,最好使用strtr()。我已经根据你最后的评论更新了我的建议:

$cities = Array(
  '66170' => 'London',
  '66001' => 'New York',
  '66002' => 'Beijing',
);

$ciudad = strtr($var['ciudad'], $cities);

简答

你想做的是这个

$ciudad = utf8_decode(str_replace('66170', 'London',$var['ciudad'] ));

删除一个点,一个 space,一些括号和引号。

长答案

我推荐使用两个数组。第一个包含所有城市编号,第二个包含所有城市名称,然后将它们用作 str_replace 参数。例如:

$citiesCodes = Array(1, 2, 3, 4, ... , 66170); 
$citiesNames = Array('New York', 'Santo Domingo', 'La Paz', 'Lima', ... , 'London'); 


$ciudad = utf8_decode(str_replace($citiesCodes, $citiesNames, $var['ciudad'] ));