将str_replace与ut8_decode结合使用

时间:2016-04-26 20:53:36

标签: php str-replace utf8-decode

首先,我还没有熟悉的PHP,所以我有这个代码,我没有自己写。

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

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

我需要的是,因为它不会返回数字而是返回城市的名称。所以我们说回报是'66170',它应该显示'伦敦'不是'66170'。

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

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

2 个答案:

答案 0 :(得分:2)

简答

你要做的是这个

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

删除点,空格,一些括号和引号。

长答案

我建议使用两个数组。第一个包含所有城市编号,第二个包含所有城市名称,然后将它们用作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'] ));

答案 1 :(得分:0)

你的想法是对的。你唯一遗漏的是你首先需要解码它:

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

如果您有许多城市代码,最好使用strtr()。我根据你上次的评论更新了我的建议:

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

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