[RESOLU] probleme fontion str_replace

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] probleme fontion str_replace

Re: [RESOLU] probleme fontion str_replace

par juliette » 05 nov. 2013, 16:49

Plus propre je sais pas trop mais c'est une solution plus portable, car mais ca ne semble pas être ton cas, si demain tu décide d'autoriser du html dans ces fameuses description, il faudra alors modifier ton code pour ajouter les nouvelles balises a supprimer...

Re: [RESOLU] probleme fontion str_replace

par loopio » 05 nov. 2013, 16:44

En fait, il n'y aura jamais autre chose que les balises citées dans mon code, car les sauts de ligne sont remplacés par un <br> automatiquement, les paragraphes aussi(div), le client ne rentrant que du texte et utilisant un bbcode basé sur le format des balises citées plus haut.
La regex est peut-être une manière plus propre de coder ?
Cela semble une option intéressante pour une autre modif que je souhaite faire sur les url.

Re: [RESOLU] probleme fontion str_replace

par juliette » 05 nov. 2013, 16:36

Si non, autre chose:
dans le 1er exemple que tu donne: la balise
<br />
n'est pas prise en compte ce qui signifie que dans ce cas la balise ne sera pas remplacer...
la solution preg_replace te permettrais via une regex de supprimer tous ce qui est contenu entre < et > par exemple et tous les cas de balise html serait pris en compte...

Re: probleme fontion str_replace

par juliette » 05 nov. 2013, 16:31

Je pensais qu'avec ma première ligne la variable $htmldesc contenait la description, et que du coup il fallait que je fasse le remplacement sur cette nouvelle variable...
J'avoue que cette partie est floue pour moi
et tu avais raison mais ce que j'ai voulu que tu remarque n'est pas ca mais le fait que tu concatène des variables dans une fonction, faut pas le faire:
BON:
$description = str_replace($suppr, "",$datas['descriptionfr']);
Pa bon:
$description = str_replace(''.$suppr.'', '', ''.$datas['descriptionfr'].'');
Le cas ou tu as besoin de concaténer est quand si tu as besoin d'ajouter une variable dans une chaine mais la ce n'est pas le cas:
$description = str_replace($suppr, "du texte ".$variableConcatener." du texte",$datas['descriptionfr']);

Re: probleme fontion str_replace

par loopio » 05 nov. 2013, 16:23

et oui tiens, pourquoi je change cette ligne au fait... lol
Bon j'ai remis comme tu as dis et effectivement ça fonctionne !

Alors pour que je comprenne bien la subtilité du php, peux-tu m'expliquer un truc ?

Je pensais qu'avec ma première ligne la variable $htmldesc contenait la description, et que du coup il fallait que je fasse le remplacement sur cette nouvelle variable...
J'avoue que cette partie est floue pour moi

En tout cas , un grand merci, j'ai désormais une balise meta bien propre :)

Re: probleme fontion str_replace

par juliette » 05 nov. 2013, 16:10

Ca ok pour la variable mais pourquoi change tu cette ligne:
$description = str_replace($suppr, "",$datas['descriptionfr']);
$suppr est la variable qui contient les chaines a trouver
"" est la chaîne (la elle est vide) par la quel seront changer les chaines trouvés
$datas['descriptionfr'] est la chaîne ou doit être effectuer le travail

Re: probleme fontion str_replace

par loopio » 05 nov. 2013, 16:06

Bonjour Juliette, et merci de ta réponse.
Je ne peux utiliser ton code tel quel, car je ne connais pas le contenu de $datas['descriptionfr'] à l'avance..
J'ai donc fais comme ça
$htmldesc = $datas['descriptionfr'];
	$suppr = array('<br>');
	$description = str_replace(''.$suppr.'', '', ''.$htmldesc.'');
	echo '<meta name="description" content="'.$description.'" />';
Mais ça ne marche toujours pas

Re: probleme fontion str_replace

par juliette » 05 nov. 2013, 15:42

Salut, en fait, c'est un peut plus simple:
$datas['descriptionfr'] = 'TEST Test';
$suppr = array('TEST');
$description = str_replace($suppr, "",$datas['descriptionfr']);
echo $description;  
// retourne: Test
Tu as aussi la fonction preg_replace ou tu peux inclure des regex: http://us1.php.net/manual/fr/function.preg-replace.php

probleme fontion str_replace

par loopio » 05 nov. 2013, 15:31

Bonjour à tous,

Je travaille actuellement à l'optimisation des balises <meta> d'un site existant.
Ce site vend des articles, et il me faut récupérer la description de ceux-ci dans la base de donnée afin de l'inclure dans une variable et ainsi renseigner la balise meta description.
Jusque là tout va bien, le seul souci c'est que la description comprend des balise html, que je souhaiterai virer avant de renseigner la balise meta.

La fonction str_replace permet de faire ceci a-priori, et ayant consulter la doc php, je suis arrivé à coder ceci:

<?php 
	$requete = mysql_query('SELECT descriptionfr FROM objet WHERE id = '.$last.'') or die (mysql_error());
	$datas = mysql_fetch_array($requete);
	$suppr = array('<BR>', '<br>', '<b>', '<DIV>', '</DIV>');
	$description = str_replace(''.$suppr.'', '', ''.$datas['descriptionfr'].'');
	echo '<meta name="description" content="'.$description.'" />';
	?>
Exemple sur cette page : http://religiosa.fr/calice-599.html

En affichant le code source, on voit que mon code ne fonctionne pas et que les balises <br> etc etc sont tjrs présentes....

Quelqu'un a t-il une idée de ce qui ne va pas ?

merci d'avances