Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
930 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  couper une chaine html sans couper de tags

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

couper une chaine html sans couper de tags

n°1347193
sub1
Posté le 14-04-2006 à 21:55:20  profilanswer
 

Bonjour,
 
 
J'ai actuellement dans un champ de type text sous mysql (provenant d'un cms), des infos au format html.
Je cherche à afficher une partie (genre les 200 1ers mots) de ces champs de manière correcte, en gardant les balises images.
Utiliser striptags+substr ne convient pas car je peux me trouver au milieu d'un tag html autorisé (img dans moncas).
J'ai essayé de récupérer le dernier "mot" avant la césure en mode texte, puis d'effectuer la césure sur le résultat précédent en mode html sans résultat convaincant.
 
Si jamais quelqun'un a une idée pour faire ca le plus simplement possible....
 
Merci.

mood
Publicité
Posté le 14-04-2006 à 21:55:20  profilanswer
 

n°1347259
nargy
Posté le 14-04-2006 à 23:12:21  profilanswer
 

> des infos au format html.
pas bien ;)
 
ho ho simplement ça va pas être possible.
une grosse expression régulière est la solution.

n°1347275
sub1
Posté le 14-04-2006 à 23:40:59  profilanswer
 

Merci de ta réponse,
 
je teste en expression régulière, mais je ne vois pas de solution...
En cliar je veux essayer de recupérer la mise en forme (tant que possible) et couper quel que soient les balises utilisées dans la création du code.  
Je suis en traine d'essayer tidy (j'ai la main sur le serveur), pour avoir un code valide après le substr, mais ca ne marche pas si je coupe en plein milieu des attributs d'un tag...

n°1347290
nargy
Posté le 14-04-2006 à 23:55:59  profilanswer
 

ok, donnes moi une liste de tags valides que tu accepte dans ta chaîne

n°1347475
sub1
Posté le 15-04-2006 à 16:04:35  profilanswer
 

Pour l'instant juste les tags img

n°1347480
Dorian BAC​+4
Posté le 15-04-2006 à 16:46:06  profilanswer
 

les 200er mots incluent-ils les tags?

n°1347481
nargy
Posté le 15-04-2006 à 16:46:15  profilanswer
 

ha oui, j'avais oublié: utilise xml_parse()

n°1347482
nargy
Posté le 15-04-2006 à 16:46:58  profilanswer
 

ou alors un truc du genre:

Code :
  1. function couper($chaine, $nbmots)
  2. {
  3.   $n=0;
  4.   $res="";
  5.   while(1)
  6.   {
  7.     // trouver le début de premier tag:
  8.     $debut_tag=strpos($chaine,'<');
  9.     // sinon prendretoute la chaine
  10.     if($debut_tag==false) $debut_tag=strlen($chaine);
  11.     // copier le morceau de texte
  12.     $tmp=substr($chaine,0,$debut_tag);
  13.     // couper par mots
  14.     $mots=split($tmp, "[ \t\r\n]" );
  15.     // ajouter les mots au résultat
  16.     for($i=0;$i<count($mots) && $n<$nbmots;$i++,$n++)
  17.       $res.=($n?" ":"" ).$mots[$i];
  18.     // vérifier si on a atteind le nombre max de mots
  19.     if ($n>=$nbmots) return $res;
  20.     // couper la chaine
  21.     $chaine=substr($chaine,$debut_tag);
  22.     // vérifier si on a atteind la fin de la chaine
  23.     if (strlen($chaine)==0) return $res;
  24.     // trouver la fin du tag
  25.     $fin_tag=strpos($chaine,'>');
  26.     // sinon erreur de fin de tag, retourner chaîne vide
  27.     if($fin_tag==false) return "";
  28.     // copier tag
  29.     $res.=substr($chaine, 0, $fin_tag+1);
  30.     // ajouter un mot
  31.     $n++;
  32.     // vérifier si on a atteind le nombre max de mots
  33.     if ($n>=$nbmots) return $res;
  34.     // couper la chaine
  35.     $chaine=substr($chaine,$fin_tag+1);
  36.   } 
  37. }


Message édité par nargy le 15-04-2006 à 16:47:46
n°1347713
sub1
Posté le 16-04-2006 à 15:27:05  profilanswer
 

Hello,
merci à tous. Je n'ai pas trop la possibilité de tester les méthodes proposées ce we.
La méthode de nargy, parser les chars 1 à 1 me semble être le plus fonctionnelle pour mon cas.
Je renvoie de l'info dès que possible...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  couper une chaine html sans couper de tags

 

Sujets relatifs
supprimer tous les expaces avant et apres une chaine de caracterePb ancres - mail html
Formulaire HTML vers PHPConversion, Fichier Binaire->Chaine Hexa string->Fichier Binaire
recherche dichotomique sur chaîne de caractèreshtml et fichier texte
Cryptage XOR d'une chaine : pbm de caractères NULLconcatenation de deux fichier html en VB
Creer une carte de france interactive sur une page htmlFonction HTML to BMP gratuite ? Convertir une page Web en image...
Plus de sujets relatifs à : couper une chaine html sans couper de tags


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR