Bonjour,
Si tu es sur de n'avoir aucun probleme lors de l'extraction de la valeur alors essaye:
EDIT: j'ai pris ton code (copié/coller) dans mon éditeur et j'ai affecter une valeur a la variable $valeur
1 2 3 4 5 6 7
| <?php
$valeur = "<span class=\"PBSalesPrice\">18,10 </span>";
$pos_deb_prix = strpos($valeur, "<span class=\"PBSalesPrice\">"); //Récupération du début de la chaîne voulue
$pos_fin_prix = strpos($valeur, "</span>", $pos_deb_prix); //Récupération de la fin de la chaîne voulue
$len_prix = ($pos_fin_prix - $pos_deb_prix)-2; //Calcul de la longueur de chaîne (-2 pour l' et l'espace précédent)
$prix = str_replace(",", ".", substr($valeur, $pos_deb_prix, $len_prix)); //On récupère la portion voulue
echo $prix; |
résultat :
<span class="PBSalesPrice">18.10 à
(dsl pour l'erreur d'encodage mais je fais se test a la va vite parce que je n'ai pas le temps)
donc il y a une erreur lorsque tu extrait le prix puisque effectivement la premiere occurence de <span class="PBSalesPrice"> est bien a l'indice 0 de la chaine de caractere.
une solution pondu rapidement, c'est pas forcement la mieux mais pour moi sa marche 
1 2 3 4 5 6 7 8 9 10
| <?php
$valeur = "<span class=\"PBSalesPrice\"> 18,10 </span>"; //j'ai cree cette ligne pour tester ton code
$valeur = str_replace("<span class=\"PBSalesPrice\">", '',$valeur); //on remplace se que l'on veut supprimer par ... rien
$valeur = str_replace("</span>", '', $valeur);
$valeur = str_replace(' ','',$valeur); // on retire tout les espace.
$valeur = substr($valeur, 0, strlen($valeur)-1);//on retire le dernier caractere de la chaine qui doit etre euro
$prix = (float)str_replace(",", ".", $valeur); // on remplace la virgule par un point
echo $prix; // j'affiche le résultat (toujours pour les test) |
En esperant t'avoir aider.
Je ne t'ai pas donner LA solution. elle est tres largement améliorable.
Je ne peut te conseiller qu'une chose: teste ton code!!!!
Nicolas,
Partager