Page 1 sur 1

pb sur manipulation de chaine

Posté : 17 mars 2007, 11:23
par sacco
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

Posté : 17 mars 2007, 11:36
par Ryle
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.

Posté : 17 mars 2007, 11:43
par sacco
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);
		                                     
	                                          }

Posté : 17 mars 2007, 11:48
par jojolapine
fait un echo $row3['JAction']; dans ta boucle, et montre nous ce que ça donne...

Posté : 18 mars 2007, 19:17
par sacco
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.

Posté : 18 mars 2007, 20:00
par Invité
et pourquoi ne pas faire:
$temp=explode(',',$Jmediatmp);
$Jmedia=$temp[0].$temp[1];

Posté : 18 mars 2007, 20:16
par sacco
ok ça marche j'avais une l'acune sur le explode.

Merci beaucoup

Posté : 19 mars 2007, 07:00
par ghalaad
SRVIMP est toujours le même ?


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

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