Je cherche à afficher seulement une partie d'une chaîne extraite d'une
base de données (ou toute autre source). Je veux récupérer uniquement x
caractères mais sans couper de mot et surtout (c'est ce qui me pose
problème) sans risquer de couper des entités HTML du genre & ou des
références numériques comme  .
Comment savoir si on coupe un mot ou une entité à x caractères ? En
particulier les entités ne sont pas forcemment limitées par des espaces :
http://exemple.com?var1=value1&var2=value2
Je suis sûr que quelqu'un a déjà été confornté au problème, mais y
a-t-il une solution qui prennet en compte ces cas de figure ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Je cherche à afficher seulement une partie d'une chaîne extraite d'une base de données (ou toute autre source). Je veux récupérer uniquement x caractères mais sans couper de mot et surtout (c'est ce qui me pose problème) sans risquer de couper des entités HTML du genre & ou des références numériques comme  .
Ne suffit-il pas de couper au dernier caractère rencontré (avant x), parmi " " et "&" ? Comme il n'y a pas d'espace dans les entités HTML numériques ou symboliques, ça devrait faire ce que tu veux.
Cela posé, le choix de la méthode (preg_replace ou substr+strrpos ou quoi que ce soit d'autre) est plutôt indifférent.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Je cherche à afficher seulement une partie d'une chaîne extraite d'une
base de données (ou toute autre source). Je veux récupérer uniquement x
caractères mais sans couper de mot et surtout (c'est ce qui me pose
problème) sans risquer de couper des entités HTML du genre & ou des
références numériques comme  .
Ne suffit-il pas de couper au dernier caractère rencontré (avant x),
parmi " " et "&" ? Comme il n'y a pas d'espace dans les entités HTML
numériques ou symboliques, ça devrait faire ce que tu veux.
Cela posé, le choix de la méthode (preg_replace ou substr+strrpos ou
quoi que ce soit d'autre) est plutôt indifférent.
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Je cherche à afficher seulement une partie d'une chaîne extraite d'une base de données (ou toute autre source). Je veux récupérer uniquement x caractères mais sans couper de mot et surtout (c'est ce qui me pose problème) sans risquer de couper des entités HTML du genre & ou des références numériques comme  .
Ne suffit-il pas de couper au dernier caractère rencontré (avant x), parmi " " et "&" ? Comme il n'y a pas d'espace dans les entités HTML numériques ou symboliques, ça devrait faire ce que tu veux.
Cela posé, le choix de la méthode (preg_replace ou substr+strrpos ou quoi que ce soit d'autre) est plutôt indifférent.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
dwojylac.nospam
Sebastien wrote:
Je cherche à afficher seulement une partie d'une chaîne extraite d'une base de données (ou toute autre source). Je veux récupérer uniquement x caractères mais sans couper de mot et surtout (c'est ce qui me pose problème) sans risquer de couper des entités HTML du genre & ou des références numériques comme  .
$text ta chaine à tronquer $nchars, le nombre de caractères voulus $delim le délimiteur sur lequel se fait la coupure (le point par défaut)
les entités html ne comportant pas d'espace elles ne seront pas tronquées, cependant tu peux avoir des questions de fermeture de balise comme par exemple si ta chaine à tronquer coomporte une séquence du style ... <b>des mots et d'autres</b> ... et que la coupure se fait entre les balises <b> et </b>
-- Dominique Wojylac http://wojylac.free.fr
Sebastien <snasna@gmail.com> wrote:
Je cherche à afficher seulement une partie d'une chaîne extraite d'une
base de données (ou toute autre source). Je veux récupérer uniquement x
caractères mais sans couper de mot et surtout (c'est ce qui me pose
problème) sans risquer de couper des entités HTML du genre & ou des
références numériques comme  .
$text ta chaine à tronquer
$nchars, le nombre de caractères voulus
$delim le délimiteur sur lequel se fait la coupure (le point par défaut)
les entités html ne comportant pas d'espace elles ne seront pas
tronquées, cependant tu peux avoir des questions de fermeture de balise
comme par exemple si ta chaine à tronquer coomporte une séquence du
style ... <b>des mots et d'autres</b> ... et que la coupure se fait
entre les balises <b> et </b>
Je cherche à afficher seulement une partie d'une chaîne extraite d'une base de données (ou toute autre source). Je veux récupérer uniquement x caractères mais sans couper de mot et surtout (c'est ce qui me pose problème) sans risquer de couper des entités HTML du genre & ou des références numériques comme  .
$text ta chaine à tronquer $nchars, le nombre de caractères voulus $delim le délimiteur sur lequel se fait la coupure (le point par défaut)
les entités html ne comportant pas d'espace elles ne seront pas tronquées, cependant tu peux avoir des questions de fermeture de balise comme par exemple si ta chaine à tronquer coomporte une séquence du style ... <b>des mots et d'autres</b> ... et que la coupure se fait entre les balises <b> et </b>
-- Dominique Wojylac http://wojylac.free.fr
Sebastien
Merci Dominique, ça fait très bien l'affaire pour moi.
les entités html ne comportant pas d'espace elles ne seront pas tronquées, cependant tu peux avoir des questions de fermeture de balise comme par exemple si ta chaine à tronquer coomporte une séquence du style ... <b>des mots et d'autres</b> ... et que la coupure se fait entre les balises <b> et </b>
Je n'ai pas ce problème, il s'agit de contenu brut qui a été vérifié lors de l'insertion dans la BDD avec un htmlspecialchars(), donc il n'y a pas à proprement parler de balises dans le texte. Mais effectivement ça doit pas mal compliquer l'histoire...
D'ailleurs je suis toujours à la recherche d'un script permettant de valider une chaîne en HTML par rapport à un ensemble d'éléments autorisés et d'attributs autorisés par élément. Mais c'est une autre histoire...
Sébastien
Merci Dominique, ça fait très bien l'affaire pour moi.
les entités html ne comportant pas d'espace elles ne seront pas
tronquées, cependant tu peux avoir des questions de fermeture de balise
comme par exemple si ta chaine à tronquer coomporte une séquence du
style ... <b>des mots et d'autres</b> ... et que la coupure se fait
entre les balises <b> et </b>
Je n'ai pas ce problème, il s'agit de contenu brut qui a été vérifié
lors de l'insertion dans la BDD avec un htmlspecialchars(), donc il n'y
a pas à proprement parler de balises dans le texte. Mais effectivement
ça doit pas mal compliquer l'histoire...
D'ailleurs je suis toujours à la recherche d'un script permettant de
valider une chaîne en HTML par rapport à un ensemble d'éléments
autorisés et d'attributs autorisés par élément. Mais c'est une autre
histoire...
Merci Dominique, ça fait très bien l'affaire pour moi.
les entités html ne comportant pas d'espace elles ne seront pas tronquées, cependant tu peux avoir des questions de fermeture de balise comme par exemple si ta chaine à tronquer coomporte une séquence du style ... <b>des mots et d'autres</b> ... et que la coupure se fait entre les balises <b> et </b>
Je n'ai pas ce problème, il s'agit de contenu brut qui a été vérifié lors de l'insertion dans la BDD avec un htmlspecialchars(), donc il n'y a pas à proprement parler de balises dans le texte. Mais effectivement ça doit pas mal compliquer l'histoire...
D'ailleurs je suis toujours à la recherche d'un script permettant de valider une chaîne en HTML par rapport à un ensemble d'éléments autorisés et d'attributs autorisés par élément. Mais c'est une autre histoire...
Sébastien
John Gallet
Bonjour,
Je cherche à afficher seulement une partie d'une chaîne extraite d'une base de données (ou toute autre source). Je veux récupérer uniquement x caractères mais sans couper de mot Jusqu'ici la fonction native de PHP devrait faire le boulot.
et surtout (c'est ce qui me pose problème) sans risquer de couper des entités HTML du genre & ou des références numériques comme  . S'ils sont pas trop manchots ils y auront pensé, à tester.
Je cherche à afficher seulement une partie d'une chaîne extraite d'une
base de données (ou toute autre source). Je veux récupérer uniquement x
caractères mais sans couper de mot
Jusqu'ici la fonction native de PHP devrait faire le boulot.
et surtout (c'est ce qui me pose
problème) sans risquer de couper des entités HTML du genre & ou des
références numériques comme  .
S'ils sont pas trop manchots ils y auront pensé, à tester.
Je cherche à afficher seulement une partie d'une chaîne extraite d'une base de données (ou toute autre source). Je veux récupérer uniquement x caractères mais sans couper de mot Jusqu'ici la fonction native de PHP devrait faire le boulot.
et surtout (c'est ce qui me pose problème) sans risquer de couper des entités HTML du genre & ou des références numériques comme  . S'ils sont pas trop manchots ils y auront pensé, à tester.
Ce n'est pas vraiment ce que je cherche à faire. J'ai une chaîne dont je ne veux afficher que x mots.
Note que si tu as utilisé wordwrap avec un caractère donné (par exemple "n") tu peux toujours, ensuite, rechercher ce caractère dans la chaîne pour la tronquer à cet endroit-là.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Ce n'est pas vraiment ce que je cherche à faire. J'ai une chaîne dont je
ne veux afficher que x mots.
Note que si tu as utilisé wordwrap avec un caractère donné (par exemple
"n") tu peux toujours, ensuite, rechercher ce caractère dans la chaîne
pour la tronquer à cet endroit-là.
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Ce n'est pas vraiment ce que je cherche à faire. J'ai une chaîne dont je ne veux afficher que x mots.
Note que si tu as utilisé wordwrap avec un caractère donné (par exemple "n") tu peux toujours, ensuite, rechercher ce caractère dans la chaîne pour la tronquer à cet endroit-là.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)