2016-04-26 4 views
-1

Чтобы начать, я еще не настолько опытен в php, поэтому у меня есть этот код, который я сам не написал.Использование str_replace в сочетании с ut8_decode

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

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

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

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

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

Почему у вас есть точки перед вызовами 'utf8_decode()'? – Sammitch

+0

Я так думаю, да, tbh i'm новичок php, и я не написал оригинальный код – Marnick

ответ

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'])); 
+0

Спасибо большое HV Sombrilla. Это сработало отлично. – Marnick

+0

Я бы предупредил об этом способе определения данных - его трудно отладить, когда вы захотите добавить или удалить некоторые города и по ошибке смещать один массив относительно другого ... Лучше использовать ассоциативный массив и изменить 'str_replace() 'to' strtr() ':' $ cities = Array ('66170' => 'London', '66001' => 'New York'); $ ciudad = strtr ($ var ['ciudad'], $ cities); ' – kay27

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); 
+0

. Я использовал упомянутый выше код, потому что он имел больше смысла с моим ограниченным знанием php. Но я попробую ваше решение завтра утром для образовательных целей. Спасибо за ответ! – Marnick

+0

Добро пожаловать! Но если ответ выше работает для вас, кажется, вам не нужно использовать utf8_decode() в целом ... Посмотрите, где он использует: http://stackoverflow.com/questions/4095899/utf8-encoding-problem -with-good-examples Нет смысла делать это для простых цифр – kay27

Смежные вопросы