[RESOLU] Attribuer un type en fonction de la balise récupérer

Eléphant du PHP | 372 Messages

15 juin 2015, 17:29

Bonjour à tous,
Je m'explique, je récupère sur mon XML le contenu souhaiter pas de problème sauf sur une balise.

On recherche la balise merchantCategoryPath sur notre xml
foreach ($flux->product as $item) {
	$genre = $item->merchantCategoryPath;
	echo $genre .'<br><br>';
Cette dernière nous renvoie par exemple:
HAR|Hard-rock/Métal ; 12P|Pop-Rock/Musique électronique ; 1MC|Musique/Concerts

Le truc qui m'interesse moi c'est Hard-rock/Métal ; Pop-Rock/Musique électronique ; Musique/Concerts
Uniquement le texte entre | et le ; Comment ciblé ceci svp.


Auquel j'attribue ensuite grace à un tableau sa valeur avec:
$type = array( 
							  // Musique
							  '12P' => 11,
							  );
Comment récupérer ce que je souhaite svp.
Merci à vous

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 juin 2015, 19:56

Bonjour,

Tu peux faire cela soit avec explode(), soit avec preg_match() et une regex
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 372 Messages

15 juin 2015, 20:36

Merci j'ai trouver ;)
Je cherche a attribuer une valeur via un array à ma variable $genre:
$genre : me renvoi par exemple :
POP|Pop-rock/Folk j'aimerais l(ui attribuer la valeur 11 par exemple avec mon array....
Comment procéder svp, merci encore

Mon code:
<?php
	
	include("include/variables.php");
	
    //connection a la base de donnee
    $dbhost = "localhost";
    $dbuser = "root";      // mysql user
    $dbpass = "";       // mysql password
    $dbname = "mabase";     // mysql database
    $conn=mysql_connect($dbhost,$dbuser,$dbpass) or die(erreurServeurMySQL());
    mysql_select_db($dbname,$conn) or die('Erreur de selection '.mysql_error()); // problème sur la bdd
     
    $flux = simplexml_load_file('http://localhost/csv/zxpd_201506140442_3467_31592008.xml'); // Source du flux.xml
						  
    foreach ($flux->product as $item) {
 
	$titre = $item->titre;
	$price = $item->price;
	$url_fnac = $item->url_fnac;
	$date_debut_sortie = $item->date_debut_sortie;
	$date_fin_sortie = $item->date_fin_sortie;
	$street = $item->street;
	$photo = $item->largeImage;
	$genre = $item->merchantCategoryPath;
	
	$type  = array( 
					
					'POP|Pop-rock/Folk ' => 11, '12P|Pop-Rock/Musique électronique' => 11, '1MC|Musique/Concerts' => 11,
					);
	
	// On fait un explode afin de récupérer ce qu'il nous interesse
	$genre  = $item->merchantCategoryPath;
	$type = explode("| ; ", $genre);
	echo $genre.'<br><br>';
	
	// On fait un explode afin de récupérer ce qu'il nous interesse
	$postcode  = $item->extra2;
	$pieces = explode(" ", $postcode);
	
	$departement = substr($postcode, 0, 2);
	
	$region = regionIdByDepartement($departement);
	
	$id_simply_user = '99';
	
	$valide = '1';
   
   
	$sql = "INSERT INTO `matable` (id_simply_user,titre,price,photo,url_fnac,date_debut_sortie,date_fin_sortie,street,postcode,city,id_region,id_departements,valide) VALUES ('$id_simply_user','$titre','$price','$photo','$url_fnac','$date_debut_sortie','$date_fin_sortie','$street','$pieces[0]','$pieces[2]','$region','$departement','$valide')";
	$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	echo 'données inserées en base';
  
 
}
 
?>

Avatar du membre
Mammouth du PHP | 1609 Messages

16 juin 2015, 17:14

Salut, si j'ai bien compris, tu peux te créer un tableau avec les chaines type 'POP|Pop-rock/Folk' en index et le numéro correspondant en valeur puis utiliser ce tableau pour faire la conversion.
$genres = array(
  'POP|Pop-rock/Folk' => 11
);

$string = 'POP|Pop-rock/Folk';
$genre = $genres[$string];
Développeur web depuis + de 20 ans