bonjour,
j'aimerai faire la recherche à la fin d'une chaîne de caractère, soit "<" soit "<b" soit "<br" soit "<br>" et les supprimer.
je pensais faire une tableau mais est ce la meilleure solution ?
quelle fonction utiliser ?
merci d'avance
Version imprimable
bonjour,
j'aimerai faire la recherche à la fin d'une chaîne de caractère, soit "<" soit "<b" soit "<br" soit "<br>" et les supprimer.
je pensais faire une tableau mais est ce la meilleure solution ?
quelle fonction utiliser ?
merci d'avance
j'ai fait ça :mais ça ne marche pas du toutCode:$commentaire = str_replace("(<|<b|<br|<br>)$","",$commentaire);
Code:
1
2
3
4 var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<'))); var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<b'))); var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<br'))); var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<br>')));
j'ai un peu du mal à comprendre ta réponse.
j'ai fait le code suivant :
ce qui est retourné :Code:
1
2
3
4
5 $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<'))); $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<b'))); $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br'))); $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br>'))); echo $commentaire;
je ne vois pas vraiment comment exploiter le résultat ! :oops:Citation:
string(230) "Cet escalier en liaison est une construction importante, situé entre trois bâtiments :<br /> - des logements collectifs<br /> - des parkings souterrains<br /> - le bâtiment commercial<br " string(0) "" string(0) "" string(0) ""
Décomposons :Code:var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<')));
http://php.net/var_dump
http://php.net/htmlentities
http://php.net/preg_replace
Autrement dis, la première fonction m'affiche plein d'infos utiles pour debugger
La deuxième permet d'afficher les tags html pour voir si ils sont présent ou pas (rappellons-nous que nous sommes dans un document html)
La dernière fait apparemment ce que tu attends.
Désolé de ne pas avoir donné plus d'explication, mais l'utilisation de var_dump & co sont super utiles pour débugger et pour moi c'est naturel de les utiliser en developpement. J'oublie trop facilement que ce n'est pas un reflexe pour tout le monde :oops:
Pour conclure donc :
Code:$commentaire = htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire);
merci pour l'info ! :D
je vais être encore chiante une dernière fois. :wink:
Avec la fonction htmlentities(), tous les caractères spéciaux sont transformés :
comment éviter cela ?Citation:
Cet escalier en liaison est une construction importante, situ&amp;eacute; entre trois b&amp;acirc;timents :&amp;lt;br /&amp;gt; - des logements collectifs&amp;lt;br /&amp;gt; - des parkings souterrains&amp;lt;br /&amp;gt; - le b&amp;acirc;timent commercial&amp;lt;br
de plus, le "<br" de la fin de la chaîne n'est pas supprimé :(
ce que je n'ai pas précisé c'est que je coupe $commentaire et je lui rajoute "... [Suite]" :
j'ai édité le code html généré et y'a vraiment un problème :Code:
1
2
3
4
5
6
7
8 $commentaire = substr($commentaire,0,190); $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<'); $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<b'); $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br'); $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br>'); $commentaire = $commentaire."... [Suite]"; echo $commentaire;
Code:
1
2
3
4 Cet escalier en liaison est une construction importante, situé entre trois bâtiments :<br> - des logements collectifs<br> - des parkings souterrains<br> - le bâtiment commercial<br .="" [suite="">
:oops: :marteau:
Je suis pas bien réveillé moa ! Il ne faut pas utiliser htmlentities...
Je mérite le fouet !
Va-t-on y arriver cette fois ?
Code:$commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire);
Pour le dernier br :
Essaie ceci :
:roll:Code:$commentaire = preg_replace('/(<|<b|<br|<br>)$/','',trim($commentaire));
nickel ! merci !