str_replace et substr

str_replace et substr - PHP - Programmation

Marsh Posté le 26-07-2008 à 02:54:21    

Salut,
 
Je voudrais afficher les 50 premiers caractères d'une requête php et remplacer les <br /> par rien.  
 
Problème, quand je mets ce code, le raccourcissement des commentaires à 50 caractères ne marche plus (mais <br /> est bien remplacé par rien). Y a-til un moyen de corriger ça ?
 
Code :
$comment_court= htmlspecialchars(substr($voir['comment'], 0, 50)) . "...";
$comment_court = str_replace('<br />', ' ', $voir['comment']);

Reply

Marsh Posté le 26-07-2008 à 02:54:21   

Reply

Marsh Posté le 26-07-2008 à 04:04:19    

:??:

Code :
  1. $comment_court= htmlspecialchars(substr($voir['comment'], 0, 50)) . "...";
  2. $comment_court = str_replace('<br />', ' ', $comment_court);


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 26-07-2008 à 14:38:59    

Et non, avec ça, <br /> n'est pas remplacé. Il apparaît toujours en tant que <br />

Reply

Marsh Posté le 26-07-2008 à 19:52:28    

Après avoir appliqué la fonction htmlspecialchars, tes caractères '<' et '>' sont remplacé par leurs équivalents en entité-caractère non ? Du coup ton str_replace fonctionne pas car ton pattern ne correspond pas à ce qui se trouve dans la chaine.
Tu devrais peut-être inverser les deux lignes, pour d'abord supprimer les <br /> tels qu'ils apparaissent dans le texte initial, puis couper le texte comme tu le souhaites.
 
nb: ma réponse se base sur mes souvenirs de php, il est possible que je me trompe quand au résultat de la fonction htmlspecialchars. :)
 
 
edit : Je viens d'aller voir la doc, et effectivement voici ce qu'on y trouve :

Citation :

#   "<" (inférieur à) devient "&lt;"
# ">" (supérieur à) devient "&gt;"


 
Si tu veux laisser ton code tel quel (pour éviter de faire plus de remplacement que nécessaire),  ton pattern pour le str_replace devrait plutôt ressemblait à:

Citation :

str_replace('&lt;br /&gt;', ' ', $comment_court);

Message cité 1 fois
Message édité par c0wb0y le 26-07-2008 à 19:54:49
Reply

Marsh Posté le 26-07-2008 à 19:57:16    

c0wb0y a écrit :

Après avoir appliqué la fonction htmlspecialchars, tes caractères '<' et '>' sont remplacé par leurs équivalents en entité-caractère non ? Du coup ton str_replace fonctionne pas car ton pattern ne correspond pas à ce qui se trouve dans la chaine.
Tu devrais peut-être inverser les deux lignes, pour d'abord supprimer les <br /> tels qu'ils apparaissent dans le texte initial, puis couper le texte comme tu le souhaites.

 

nb: ma réponse se base sur mes souvenirs de php, il est possible que je me trompe quand au résultat de la fonction htmlspecialchars. :)

 


edit : Je viens d'aller voir la doc, et effectivement voici ce qu'on y trouve :

Citation :

#   "<" (inférieur à) devient "&lt;"
# ">" (supérieur à) devient "&gt;"

 

Si tu veux laisser ton code tel quel (pour éviter de faire plus de remplacement que nécessaire),  ton pattern pour le str_replace devrait plutôt ressemblait à:

Citation :

str_replace('&lt;br /&gt;', ' ', $comment_court);


 

edit2 :
A priori sans même changer le pattern, il suffit d'appliquer le htmlspecialchars sur le retour du str_replace je pense :

Citation :

$comment_court= substr($voir['comment'], 0, 50) . "...";
$comment_court = htmlspecialchars((str_replace('<br />', ' ', $voir['comment']));

 


nb: mayrde, double post, j'pensais avoir cliquer sur éditer, désolé. :jap:

Message cité 1 fois
Message édité par c0wb0y le 26-07-2008 à 19:57:49
Reply

Marsh Posté le 29-07-2008 à 16:15:12    

c0wb0y a écrit :


 

Citation :

$comment_court= substr($voir['comment'], 0, 50) . "...";
$comment_court = htmlspecialchars((str_replace('<br />', ' ', $voir['comment']));




 

Code :
  1. $comment_court= substr($voir['comment'], 0, 50) . "...";
  2. $comment_court = (str_replace(htmlspecialchars('<br />'), ' ', $voir['comment']);


 [:gamercool_02]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed