Для начала я еще не настолько опытен в php, поэтому у меня есть этот код, который я сам не написал.
.utf8_decode($var['ciudad']).
Возвращает значение города, это число 66170 или 66001.
Что мне нужно, так это чтобы не возвращался номер, а название города. Итак, допустим, возвращение «66170», оно должно показывать «Лондон», а не число «66170».
Теперь я знаю, что должен использовать str_replace. Но вот где я застреваю, в этом фрагменте кода есть utf8_decode, который портится с моим кодом. (или просто смущает меня) моя идея была более или менее такой:
$ciudad= .utf8_decode(str_replace('66170 ', 'London',($var['ciudad']).'))
Короткий ответ
То, что вы пытаетесь сделать, это
$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'] ));
Ваша идея была правильной. Единственное, что вы пропустили, так это то, что вам в первую очередь нужно его декодировать:
$ciudad = str_replace('66170', 'London', utf8_decode($var['ciudad']));
Если у вас много кодов городов, лучше использовать strtr()
, Я обновил свое предложение в соответствии с вашим последним комментарием:
$cities = Array(
'66170' => 'London',
'66001' => 'New York',
'66002' => 'Beijing',
);
$ciudad = strtr($var['ciudad'], $cities);