pb sur manipulation de chaine

Eléphant du PHP | 180 Messages

17 mars 2007, 11:23

Bonjour,

je voudrais extaire le début d'une chaine qui n'est jamais identique mais qui a toujours une occurence ","

ex :
SRVIMP_85, N° série 000085, ID C21E, N° séquence 1

donc la chaine que je veux récuperer est
SRVIMP_85, N° série 000085

j'ai fait
 $Jmedia = substr($Jmediatmp,16);
mais me renvoie tout

je ne peux pas utiliser un explode car $Jmediatmp est de type array

merci d'avance pour astuce

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mars 2007, 11:36

La fonction substr() sert à couper une chaine, cela ne peut donc pas marcher si ta variable est un tableau. Il faut commencer par retrouver ta chaine pour pouvoir travailler dessus... ;)

Tu pourras alors très bien faire un explode() sur la virgule et récupérer les éléments dont tu as besoin, ou bien même utiliser substr() et strpos().
explode (',' , $Jmediatmp['indexDuTableauContenantLaChaine'] );
Nota : le 2è paramètre passé à substr est l'index de début, si tu veux les 16 premiers caractères, c'est substr($maChaine, 0, 16) qu'il te faut faire.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 180 Messages

17 mars 2007, 11:43

lorsque je passe par un explode il me met array
mon code pour cela est
$query = 'SELECT JAction FROM journal WHERE JInfo = \''.$JInfo1.'\' and JAction like \''.$Jmed.'\'';  		 			 
	
	foreach ($sqldb3->query($query) as $row3){$Jmediatmp=$row3['JAction'];
		                                    $Jmedia=explode(',',$row3['JAction']);
		                                    // $Jmedia = substr($Jmediatmp,16);
		                                     
	                                          }

ViPHP
ViPHP | 3607 Messages

17 mars 2007, 11:48

fait un echo $row3['JAction']; dans ta boucle, et montre nous ce que ça donne...

Eléphant du PHP | 180 Messages

18 mars 2007, 19:17

cela donne

Utilise le média SRVIMP_85, N° série 000085, ID C21E, N° séquence 1

et moi en faisant
   $Jmedia = substr($Jmediatmp,16);
normal je récupère

SRVIMP_85, N° série 000085, ID C21E, N° séquence 1

mais je ne veux pas ", N° séquence 1"

sachant que la ligne récupéré ne fait pas obligatoirement la même longueur.

Invité
Invité n'ayant pas de compte PHPfrance

18 mars 2007, 20:00

et pourquoi ne pas faire:
$temp=explode(',',$Jmediatmp);
$Jmedia=$temp[0].$temp[1];

Eléphant du PHP | 180 Messages

18 mars 2007, 20:16

ok ça marche j'avais une l'acune sur le explode.

Merci beaucoup

Eléphanteau du PHP | 49 Messages

19 mars 2007, 07:00

SRVIMP est toujours le même ?


$pattern = '/SRVIMP_([0-9]*)/';

et après tu récupères ça avec ereg() et autres preg_*