2010-03-08 9 views
19

Vous pouvez utiliser des tableaux avec str_replace():str_replace() avec tableau associatif

$array_from = array ('from1', 'from2'); 
$array_to = array ('to1', 'to2'); 

$text = str_replace ($array_from, $array_to, $text); 

Mais si vous avez un tableau associatif?

$array_from_to = array (
'from1' => 'to1'; 
'from2' => 'to2'; 
); 

Comment pouvez-vous l'utiliser avec str_replace()?
La vitesse compte - le tableau est assez grand.

Répondre

37

$text = strtr($text, $array_from_to)

Soit dit en passant, qui est encore un "tableau." Unidimensionnels

+0

oui, mon mauvais. l'a changé – Qiao

+0

ce n'est pas la solution parfaite pour le problème énoncé (les longueurs de cause devraient être les mêmes), mais c'est idéal dans mon cas. Et la vitesse est rapide. – Qiao

+3

'strtr' fonctionne correctement avec des valeurs de remplacement dont la longueur diffère de la valeur de recherche. La différence entre ce dernier et 'str_replace' est que' strtr' ne fera qu'une traduction (la plus longue sera la première), ce qui sera plus rapide (mais avec des résultats différents). Par exemple, ['ab' => 'c', 'c' => 'd'] traduira 'ab' en 'c', alors qu'avec str_replace il deviendra 'd'. – Matthew

1
$keys = array_keys($array); 
$values = array_values($array); 
$text = str_replace($key, $values, $string); 
24
$array_from_to = array (
    'from1' => 'to1', 
    'from2' => 'to2' 
); 

$text = str_replace(array_keys($array_from_to), $array_from_to, $text); 

Le champ to ignore les clés de votre tableau. La fonction clé ici est array_keys.

+1

Wow! Une utilisation très intelligente des fonctions ici. Même en 2014, cela fonctionne à merveille! – arrayown

+1

Merci @ user1383815 - les mouches de temps: senti comme ce poste juste téléporté. – mauris

+0

Est-ce que $ array_from_ peut être parcouru dans un ordre différent de ce que array_keys() renvoie? – PhoneixS

2
$search = array('{user}', '{site}'); 
$replace = array('Qiao', 'stackoverflow'); 
$subject = 'Hello {user}, welcome to {site}.'; 

echo str_replace ($search, $replace, $subject); 

Résultats dans Hello Qiao, welcome to stackoverflow..

$array_from_to = array (
    'from1' => 'to1'; 
    'from2' => 'to2'; 
); 

Ce tableau n'est pas un tableau à deux dimensions, c'est un tableau associatif.

En développant le premier exemple, où nous plaçons la recherche $ comme clé du tableau et le $ replace comme valeurs, le code ressemblerait à ceci.

$searchAndReplace = array(
    '{user}' => 'Qiao', 
    '{site}' => 'stackoverflow' 
); 

$search = array_keys($searchAndReplace); 
$replace = array_value($searchAndReplace); 
# Our subject is the same as our first example. 

echo str_replace ($search, $replace, $subject); 

Résultats dans Hello Qiao, welcome to stackoverflow..

3
$text='yadav+RAHUL(from2'; 

    $array_from_to = array('+' => 'Z1', 
         '-' => 'Z2', 
         '&' => 'Z3', 
         '&&' => 'Z4', 
         '||' => 'Z5', 
         '!' => 'Z6', 
         '(' => 'Z7', 
         ')' => 'Z8', 
         '[' => 'Z9', 
         ']' => 'Zx1', 
         '^' => 'Zx2', 
         '"' => 'Zx3', 
         '*' => 'Zx4', 
         '~' => 'Zx5', 
         '?' => 'Zx6', 
         ':' => 'Zx7', 
         "'" => 'Zx8'); 

    $text = strtr($text,$array_from_to); 

    echo $text; 

//output is 

yadavZ1RAHULZ7from2