Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/08/2011, 15h27   #1
Membre du Club
 
Homme Boris
conception et traitement de documents xhtml
Inscription : août 2011
Messages : 107
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : conception et traitement de documents xhtml
Secteur : Conseil

Informations forums :
Inscription : août 2011
Messages : 107
Points : 59
Points : 59
Par défaut espace rajouté lors de l'entrée d'un item de tableau associatif contenant un caractère \w

Bonjour,

J'ai un petit souci avec l'introduction d'une clé dans un tableau associatif :
lorsque la clé est une variable et qu'elle contient un caractère non alphabétique non suivi d'un espace (par exemple 8xx/CO), le tableau ajoute systématiquement un espace après le caractère (le résultat correspondant à l'exemple devient 8xx/ CO).

Code :
1
2
3
 
$key = preg_replace('#[ ]*([^\w])[ ]+#i', '\1', $key);	// initialement $key = 8xx / CO 
$replacement_table[$table_name][$key] = $value2;
Avez-vous une solution permettant d'obtenir la clé telle qu'elle est définie: 8xx/CO ? (J'ai essayé de mettre $key entre '
Code :
$replacement_table[$table_name]['$key'] = $value2;
. Même résultat.

Par contre, lorsque j'introduis un item "à la main"
Code :
$replacement_table[$table_name]['8xx/CO'] = $value2;
, la clé est correctement reproduite.

Oserais-je penser qu'il s'agit d'un bug ou bien y a-t-il une petite finesse que je ne saisis pas ?

Merci de votre aide
Doc_xhtml est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h10   #2
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Salut,
je ne comprends pas bien ton problème, peux-tu préciser ?

Code :
1
2
3
4
5
$key = "8xx / CO";
$key = preg_replace('#[ ]*([^\w])[ ]+#i', '\1', $key);
var_dump($key);
$arr[$key] = 12;
var_dump($arr);
semble retourner le résultat escompté :

Citation:
string(6) "8xx/CO" array(1) { ["8xx/CO"]=> int(12) }
__________________
Vive les roues en pierre
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 00h32   #3
Membre du Club
 
Homme Boris
conception et traitement de documents xhtml
Inscription : août 2011
Messages : 107
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : conception et traitement de documents xhtml
Secteur : Conseil

Informations forums :
Inscription : août 2011
Messages : 107
Points : 59
Points : 59
Merci Djakisback.

Le problème que j'observais était le suivant:

Lorsque j'affichais $key et le tableau
Code :
1
2
3
4
5
 
$key = preg_replace('#[ ]*([^\w])[ ]+#i', '\1', $key);
echo $key;
$replacement_table[$table_name][$key] = $value2;
print_r($replacement_table[$table_name]);
$key s'affichait normalement, sans espace, alors que le tableau affichait la clé avec un espace après le caractère !

Suite à ta réponse j'ai pensé que c'était print_r qui affichait un espace qui n'existait pas physiquement dans la clé.

Depuis, j'ai modifié mon code en différents endroits et le tableau s'affiche maintenant comme escompté, sans espaces avant et après le caractère.

Mystère...
Doc_xhtml est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h26.


 
 
 
 
Partenaires

Hébergement Web