2016-04-26 4 views
-1

Pour commencer, je ne suis pas encore expérimenté en php, donc j'ai ce code que je n'ai pas écrit moi-même.Utiliser str_replace en combinaison avec ut8_decode

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

Il retourne une valeur d'une ville, c'est un nombre, 66170 ou 66001.

Ce que j'ai besoin est, pour elle de ne pas retourner le numéro, mais le nom de la ville. Alors disons que le retour est '66170 ', il devrait montrer'London' pas le numéro '66170'.

Maintenant, je sais que je devrais utiliser str_replace. Mais là où je suis coincé, le morceau de code contient un code utf8_decode qui gâche mon code. (ou me confond juste) mon idée était plus ou moins comme ceci:

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

Pourquoi avez-vous des points devant les appels de fonction 'utf8_decode()'? – Sammitch

+0

Je pense que oui, tbh je suis un débutant php et je n'ai pas écrit le code original – Marnick

Répondre

2

Réponse courte

Ce que vous essayez de faire est ce

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

Suppression d'un point, un espace, une parenthèse et des citations.

Réponse longue

Je recommande l'utilisation de deux tableaux. Le premier avec le numéro de toutes les villes et le second avec le nom de toutes les villes, puis les utiliser comme paramètres str_replace. Par exemple:

$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

Merci beaucoup HV Sombrilla. Cela a fonctionné parfaitement. – Marnick

+0

Je préviens de cette façon de définir les données - il est difficile de déboguer quand vous voulez ajouter ou supprimer des villes et déplacer un tableau par rapport à un autre ... Il vaut mieux utiliser un tableau associatif et changer 'str_replace() 'à' strtr() ':' $ cities = Array ('66170' => 'London', '66001' => 'New York'); $ ciudad = strtr ($ var ['ciudad'], $ villes); ' – kay27

0

Votre idée était bonne. La seule chose que vous avez manqué est que vous tout d'abord besoin de le décoder:

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

Si vous avez plusieurs codes de la ville, il est préférable d'utiliser strtr(). J'ai mis à jour ma suggestion selon votre dernier commentaire:

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

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

J'ai utilisé le code mentionné ci-dessus, car il a plus de sens avec mes connaissances limitées en PHP. Mais je vais essayer votre solution demain matin à des fins éducatives. Merci pour la réponse! – Marnick

+0

De rien! Mais si la réponse ci-dessus fonctionne pour vous, il semble que vous n'avez pas besoin d'utiliser utf8_decode() en entier ... Jetez un oeil où il utilise: http://stackoverflow.com/questions/4095899/utf8-encoding-problem -with-good-examples Ce n'est pas une raison de le faire pour des chiffres simples – kay27