Bonjour,

Je parsse très bien un fichier xml avec simplexml de la forme ISO 8859-1

Avec ces 2 lignes

// 1 count pour gérer la pagination
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$count = count($document->xpath(utf8_encode("//products/product/fields[region='$region']")));
// 1 pour lire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$produits = $document->xpath(utf8_encode("//products/product[fields/region='$region'][position()>=$debut_pos and position()<$fin_pos]"));
J'encode de manière à pouvoir lire les accents, j'ai par exemple
<region>Pays de la Loire-Vendée</region> et cela se passe très bien pour compter et lire le fichier xml.
l'attribut région sert à trier évidemment !

Or j'ai un attribut région à lire et là je ne peux lire ni compter avec count
<region>Provence - Côte d'Azur</region>

Je me suis apperçu que j'avais le même souçi avec les villes Les Sables d'Olonne
par exemple, donc cela viens de l'apostrophe (') d'azur par ex.

Problème, je ne vois pas que faire à cela !
mon expression x path est mal écrite ? mais elle fonctionne sauf
dans ce cas précis !

Merci d'avance pour un avis

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?xml version="1.0" encoding="ISO-8859-1" ?> 
- <products>
- <product>
  <name></name> 
  <productUrl></productUrl> 
  <imageUrl></imageUrl> 
  <description></description> 
  <TDProductId></TDProductId> 
- <fields>
  <region>Provence - Côte d'Azur</region>
  </fields>
  </product>

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
 
// On récupère la ville
if (isset($_GET['ob'])) { $objet=$_GET['ob']; } else {$objet = "";}
 
$ina = array("provence-cote-d-azur","sud-ouest", ... ");
$outa = array("Provence - Côte d'Azur","Sud Ouest", ... ");
$region = str_replace($ina, $outa, $objet); 
 
<?php 
define('NB_PAR_PAGE', 10); 
 
// On récupère le num de page sur laquelle on est pagination
 
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;   
$document = simplexml_load_file('produits.xml');
 
 $count = count($document->xpath(utf8_encode("//products/product/fields[region='$region']")));  
 
$debut_pos = ($page - 1) * NB_PAR_PAGE + 1; 
$fin_pos = $page * NB_PAR_PAGE + 1;
$derniere_page = ceil($count / NB_PAR_PAGE);
 
 $produits = $document->xpath(utf8_encode("//products/product[fields/region='$region'][position()>=$debut_pos and position()<$fin_pos]"));
// print_r($produits);
 
 
 foreach ($produits as $produit) {
 
echo'
<h3><a href="/n/url?'.url_encrypt($produit->productUrl).'" rel="nofollow" /> '. utf8_decode($produit->name) .'</a></h3>
';
 }