Explode avec espace comme séparateur ne marche pas

Fermé
KlausKerner - Modifié par KlausKerner le 23/07/2014 à 15:15
 KlausKerner - 24 juil. 2014 à 14:03
Bonjour,

Le code cherche à exploser une chaine de caractère, avec l'espace comme séparateur, afin d'obtenir un tableau.
La chaine est le retour d'une commande qu'on lance au shell et qui renvoie par exemple
"nomDeFichier1<espace>nomDeFichier2<espace>nomDeFichier3"
seulement l'explode ne retourne qu'une valeur, il n'explose rien.
voici le code:

$shellReq="grep -ri $chaineAChercher MonRep/files/*.txt";
$shellRet=shell_exec($shellReq);
echo '<br>la console retourne:'.$shellRet;
$array_fichiers=explode(' ', $shellRet);

print_r($array_fichiers);

et ça me retourne tous les noms de fichier dans une seule cellule de tableau, donc il n'a effectuer aucun split
j'ai également essayé avec
$array_fichiers=explode(" ", $shellRet);

En fait on dirait que le caractère espace retourné par le shell n'est pas identique au caractère espace reconnu par php. d'ailleurs cette fonction :
$shellRetMod=str_replace(" ", ".", $shellRet);
ne remplace pas non plus les espace par des points.

Est-ce que quelqu'un pourrait me dire comment exploser cette chaine ?

Merci,



2 réponses

Salut,

Je suis assez étonnée du résultat ^^ , cette fonction ne réserve pas beaucoup de surprise habituellement.

Peut être un problème d'encodage à la récupération??
Tu peux tester :

$texte1=explode(utf8_encode(" "),utf8_encode($texte)); 

Résolu? ===> [RESOLU]
0
Salut Kyser soze,

Merci pour ta réponse !

Bizarrement ça me donne toujours le même résultat, c'est dingue Oo

Je continue de chercher,

Klaus
0
Alors en fait le shell met tout dans un string, mais ce qu'on visualise comme étant un espace, est en réalité un crlf (le caractère hexadecimal 10)
0