Использование str_replace в сочетании с ut8_decode

Для начала я еще не настолько опытен в php, поэтому у меня есть этот код, который я сам не написал.

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

Возвращает значение города, это число 66170 или 66001.

Что мне нужно, так это чтобы не возвращался номер, а название города. Итак, допустим, возвращение «66170», оно должно показывать «Лондон», а не число «66170».

Теперь я знаю, что должен использовать str_replace. Но вот где я застреваю, в этом фрагменте кода есть utf8_decode, который портится с моим кодом. (или просто смущает меня) моя идея была более или менее такой:

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

-1

Решение

Короткий ответ

То, что вы пытаетесь сделать, это

$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'] ));
2

Другие решения

Ваша идея была правильной. Единственное, что вы пропустили, так это то, что вам в первую очередь нужно его декодировать:

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

Если у вас много кодов городов, лучше использовать strtr(), Я обновил свое предложение в соответствии с вашим последним комментарием:

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

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

По вопросам рекламы [email protected]