manipulation d'une chaîne

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

dudo
WRInaute impliqué
WRInaute impliqué
 
Messages: 369
Inscription: Sam Jan 10, 2004 17:28

manipulation d'une chaîne

Message le Sam Aoû 02, 2008 11:22

Bonjour,

J'ai besoin de manipuler le contenu d'une chaine

Code: Tout sélectionner

$storeoffer->stock_description[0]->tagData

if($show_stock_message==true){echo'<td align="center" valign="middle">'.$storeoffer->stock_description[0]->tagData.'</div></td>';

'.$storeoffer->stock_description[0]->tagData.' m'affiche bien un contenu

je comptais donc mettre cette ligne dans une variable

$tagData ="$storeoffer->stock_description[0]->tagData";

pour manipuler cette chaîne:

$in = array('à', 'á', 'â', 'ô', 'è', 'é', 'ê', 'î', 'ù', 'ú','û');
$out = array('à ', 'á ', 'â ', 'ô ', 'è ', 'é ', 'ê ', 'î ', 'ù ', 'ú ','û ');
$tagData = str_replace($in, $out, $tagData);


if($show_stock_message==true){echo'<td align="center" valign="middle">&nbsp;<div class="api_store_promo">$tagData</div></td>';}

Mais au final cela m'affiche $tagData et non pas le contenu

Débutant en php

merci

ludo[/code]


bgdc
WRInaute passionné
WRInaute passionné
 
Messages: 657
Inscription: Lun Mai 23, 2005 20:51

Message le Sam Aoû 02, 2008 11:36

Bonjour,

et si tu essayais ça :

Code: Tout sélectionner
{echo'<td align="center" valign="middle">&nbsp;<div class="api_store_promo">'.$tagData.'</div></td>';}

dudo
WRInaute impliqué
WRInaute impliqué
 
Messages: 369
Inscription: Sam Jan 10, 2004 17:28

Message le Sam Aoû 02, 2008 12:41

et si tu essayais ça :

Code: Tout sélectionner
{echo'<td align="center" valign="middle">&nbsp;<div class="api_store_promo">'.$tagData.'</div></td>';}
[/quote]


Re Bonjour,

Merci, cela fonctionne parfaitement, en revanche je ne résouds pas complètement
mon problème en effet si je traite ma chaine , je me retrouve avec des aberrations:
numérique devient numé rique évidemment !

J'utilise le code paser XML/HTML à cette adresse
*http://www.criticaldevelopment.net/xml/parser_php4.phps

Ce parser m'enlève les espaces à chaque fois qu'il rencontre une lettre accentuée et je ne comprends pas pourquoi:

Ex: l'appareil estégalementéquipéd'un bouton de type joystick

au lieu de

l'appareil est également équipé d'un bouton de type joystick

Les espaces disparaissent entre chaque mot à chaque fois
qu'il a y une lettre accentuée en début ou en fin de mot

Merci


bgdc
WRInaute passionné
WRInaute passionné
 
Messages: 657
Inscription: Lun Mai 23, 2005 20:51

Message le Sam Aoû 02, 2008 12:49

au fait, je ne comprends pas l'utilité de ça :
Code: Tout sélectionner
$in = array('à', 'á', 'â', 'ô', 'è', 'é', 'ê', 'î', 'ù', 'ú','û');
$out = array('à ', 'á ', 'â ', 'ô ', 'è ', 'é ', 'ê ', 'î ', 'ù ', 'ú ','û ');
$tagData = str_replace($in, $out, $tagData);


Tu remplaces les lettres accentuées par des lettres accentués ? Je pense qu'il y a un copié/collé malheureux et que la correction résoudra peut être ton autre pb.


zeb
WRInaute accro
WRInaute accro
 
Messages: 1186
Inscription: Dim Déc 05, 2004 19:47

Message le Sam Aoû 02, 2008 12:52

dudo a écrit:J'utilise le code paser XML/HTML à cette adresse
*http://www.criticaldevelopment.net/xml/parser_php4.phps

Pour pouvoir te répondre, il faudrait un peut plus de détails, notamment un exemple concret et le moment ou cette disparition est constaté.
Ajout des echo ici et là pour voir l'évolution de ta chaine et identifier l'endroit ou les espace disparaissent.


zeb
WRInaute accro
WRInaute accro
 
Messages: 1186
Inscription: Dim Déc 05, 2004 19:47

Message le Sam Aoû 02, 2008 12:52

bgdc a écrit:au fait, je ne comprends pas l'utilité de ça :
Code: Tout sélectionner
$in = array('à', 'á', 'â', 'ô', 'è', 'é', 'ê', 'î', 'ù', 'ú','û');
$out = array('à ', 'á ', 'â ', 'ô ', 'è ', 'é ', 'ê ', 'î ', 'ù ', 'ú ','û ');
$tagData = str_replace($in, $out, $tagData);


Tu remplaces les lettres accentuées par des lettres accentués ? Je pense qu'il y a un copié/collé malheureux et que la correction résoudra peut être ton autre pb.


je me suis aussi posé la question avant de voir qu'il rajoute les espaces disparus derrière les caractères accentués.

donc traitement aval d'un bug en amont qui donne :

je me retrouve avec des aberrations: numérique devient numé rique évidemment !


bgdc
WRInaute passionné
WRInaute passionné
 
Messages: 657
Inscription: Lun Mai 23, 2005 20:51

Message le Sam Aoû 02, 2008 12:56

zeb a écrit:donc traitement aval d'un bug en amont qui donne :

je me retrouve avec des aberrations: numérique devient numé rique évidemment !


Bien vu, les espaces m'avait echapé :oops:

dudo
WRInaute impliqué
WRInaute impliqué
 
Messages: 369
Inscription: Sam Jan 10, 2004 17:28

Message le Sam Aoû 02, 2008 13:41

bgdc a écrit:au fait, je ne comprends pas l'utilité de ça :
Code: Tout sélectionner
$in = array('à', 'á', 'â', 'ô', 'è', 'é', 'ê', 'î', 'ù', 'ú','û');
$out = array('à ', 'á ', 'â ', 'ô ', 'è ', 'é ', 'ê ', 'î ', 'ù ', 'ú ','û ');
$tagData = str_replace($in, $out, $tagData);


Tu remplaces les lettres accentuées par des lettres accentués ? Je pense qu'il y a un copié/collé malheureux et que la correction résoudra peut être ton autre pb.



Non en fait je corrige en rajoutant l'espace disparu

$in = array('à', 'â ', 'ô ', 'è ', 'é '');
$out = array('&nbsp;à&nbsp;', '', 'â&nbsp;', 'é&nbsp; ');
$tagData = str_replace($in, $out, $tagData);

En fait, il y a 2 solutions,

1/ soit je bricole le code précédent et pour résoudre le problème il me faut une fonction qui traite la variable $tagData et qui ajoute un espace
à gauche s'il s'agit d'une première lettre accentuée et/ ou à droite s'il s'agit de la dernière lettre
accentuée de chaque mot de ma chaine. Et cela dépasse mes compétences

2/ soit je trouve le bug au niveau parse xml

J'utilise le code paser XML/HTML à cette adresse
*http://www.criticaldevelopment.net/xml/parser_php4.phps

//Setup the parser object

$parser = new XMLParser($xml);

//Work the magic...
$parser->Parse();

/*echo

$tagData ="$storeoffer->stock_description[0]->tagData";

if($show_stock_message==true) {echo'<td align="center" valign="middle"><div class="api_store_promo">'.$tagData.'</div></td>';}


Dans $tagData, les espaces disparaissent à chaque fois qu'il y a une lettre accentuée dans le texte ex: si j'ai "2 à 2" i il s'affiche "2à2"
"un ensemble de fonctionsàfaire" au lieu de "un ensemble de fonctions à faire" si j'ai du texte anglais aucun espace disparait.


bgdc
WRInaute passionné
WRInaute passionné
 
Messages: 657
Inscription: Lun Mai 23, 2005 20:51

Message le Sam Aoû 02, 2008 19:15

as tu essayer avec des caracteres sans accents ?
Si oui, as tu le meme pb ?

Tu peux aussi essayer de regarder cette ligne :

Code: Tout sélectionner
eval('$this->'.$tag.'->tagData .= trim($data);');

dudo
WRInaute impliqué
WRInaute impliqué
 
Messages: 369
Inscription: Sam Jan 10, 2004 17:28

Message le Sam Aoû 02, 2008 21:17

bgdc a écrit:as tu essayer avec des caracteres sans accents ?
Si oui, as tu le meme pb ?

Tu peux aussi essayer de regarder cette ligne :

Code: Tout sélectionner
eval('$this->'.$tag.'->tagData .= trim($data);');


Alors là chapeau !

Sans le trim tout rentre dans l'ordre

Un grand merci !


bgdc
WRInaute passionné
WRInaute passionné
 
Messages: 657
Inscription: Lun Mai 23, 2005 20:51

Message le Sam Aoû 02, 2008 21:29

De rien :wink:


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités