[PHP] éviter les mots orphelins dans un texte
geemeetheway
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Dalida Messages postés 6728 Date d'inscription Statut Contributeur Dernière intervention -
Dalida Messages postés 6728 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai déjà une fonction bien pratique qui remplace l'espace entre les deux derniers mots d'un paragraphe par "& n b s p ;" afin d'éviter d'avoir un mot orphelin sur une seule ligne. Ce n'est jamais beau un mot orphelin!
voici le code :
Mon problème aujourd'hui est le suivant, j'ai de gros bloc de textes dans une base de données qui contiennent plusieurs paragraphes par enregistrement. Quand je le passe dans cette fonction, il ne traite que le dernier paragraphe. C'est logique de la façon dont elle est écrite.
Comment puis-je modifier ma fonction afin de pouvoir changer l'espace entre les deux derniers mots de chaque paragraphe dans un bloc de texte?
Merci
GeemeeTheway
J'ai déjà une fonction bien pratique qui remplace l'espace entre les deux derniers mots d'un paragraphe par "& n b s p ;" afin d'éviter d'avoir un mot orphelin sur une seule ligne. Ce n'est jamais beau un mot orphelin!
voici le code :
function anti_orphelins($TheParagraph) { if (substr_count($TheParagraph," ") > 1) { $lastspace = strrpos($TheParagraph," "); $TheParagraph = substr_replace($TheParagraph," ",$lastspace,1); } return $TheParagraph; }
Mon problème aujourd'hui est le suivant, j'ai de gros bloc de textes dans une base de données qui contiennent plusieurs paragraphes par enregistrement. Quand je le passe dans cette fonction, il ne traite que le dernier paragraphe. C'est logique de la façon dont elle est écrite.
Comment puis-je modifier ma fonction afin de pouvoir changer l'espace entre les deux derniers mots de chaque paragraphe dans un bloc de texte?
Merci
GeemeeTheway
A voir également:
- [PHP] éviter les mots orphelins dans un texte
- Éviter pub youtube - Accueil - Streaming
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Mettre un texte en majuscule - Guide
- Où sont stockés les mots de passe sur android - Guide
3 réponses
Puisque tu parles de paragraphes, je suppose que tu respectes la nomenclature html et utilises les balises <p></p> ?
Dans ce cas, pourquoi ne pas parser ton code, récupérer les chaines comprises entre <p></p>, qui deviennent alors $TheParagraph, et pour chacun des paragraphes, tu exécute ta fonction anti orphelin.
https://www.google.fr/search?q=php+text+between+string&gws_rd=ssl
Dans ce cas, pourquoi ne pas parser ton code, récupérer les chaines comprises entre <p></p>, qui deviennent alors $TheParagraph, et pour chacun des paragraphes, tu exécute ta fonction anti orphelin.
https://www.google.fr/search?q=php+text+between+string&gws_rd=ssl
salut,
il faut d'abord découper les paragraphes, les mettre dans un tableau et boucler pour appliquer ton nettoyage, en partant du principe que le retour chariot est codé avec la valeur du serveur :
si les balises <p> sont enregistrés dans la base, tu peux découper avec une expression régulière.
il faut d'abord découper les paragraphes, les mettre dans un tableau et boucler pour appliquer ton nettoyage, en partant du principe que le retour chariot est codé avec la valeur du serveur :
<?php function anti_orphelins($TheParagraph) { $paragraphs = explode(PHP_EOL, $TheParagraph); foreach($paragraphs as $key => $p) if(substr_count($p," ") > 1) { $lastspace = strrpos($p," "); $paragraphs[$key] = substr_replace($p," ",$lastspace,1); } return implode(PHP_EOL, $paragraphs); } ?>
si les balises <p> sont enregistrés dans la base, tu peux découper avec une expression régulière.