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
$count = count($document->xpath(utf8_encode("//products/product/fields[region='$region']")));
// 1 pour lire
$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
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> |
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>
';
} |
Partager