Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Complément script php decouper texte


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2019
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Complément script php decouper texte
    Bonjour à tous et désolé de vous déranger.

    J'ai trouvé ce script sur la toile qui coupe un texte après le 5ème mot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function tronquer_chaine_mot($string, $limit = 5, $fin = '...')
    {
    preg_match('/^\s*+(?:\S++\s*+){1,' .$limit. '}/u', $string, $matches);
    if (!isset($matches[0]) || strlen($string) === strlen($matches[0])) {
    	return $string;
           }
    return rtrim($matches[0]).$fin;
    }
    echo tronquer_chaine_mot("un deux trois quatre cinq six sept huit neuf dix onze douze treize ");
    ?>
    J'aimerai qu'il coupe le texte aléatoirement entre 3 et 5 mots et qu'il affiche les découpages les un en dessous des autres comme une liste exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    un deux trois quatre cinq
    six sept huit
    neuf dix onze douze
    Désolé j'ai pas su trouver comment formater le code php pour le forum

    Merci beaucoup pour votre aide précieuse.
    Kevin

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    7 303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 7 303
    Points : 11 456
    Points
    11 456
    Par défaut
    pour afficher la code, c'est le bouton "croisillon #" dans la barre d'outil.

    si par "mot" vous chercher à faire un découpage suivant les espaces, vous pouvez faire un parcours du tableau comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function tronquer_chaine_mot($texte) {
     
    	$tableau = explode(" ", trim($texte));
     
    	$resultat = "";
    	$parcours = mt_rand(3, 5);
     
     
    	foreach ($tableau as $index => $element) {
     
    		if ($parcours === $index) {
    			$parcours += mt_rand(3, 5);
    			$resultat .= "\n";
    		}
     
    		$resultat .= " $element";
     
    	}
     
     
    	return trim($resultat); // trim pour retirer le 1er espace
     
    }

  3. #3
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 16 023
    Points : 32 821
    Points
    32 821
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    function tronquer_chaine_mot_alea($string) {
     
    	$array = explode(' ', trim($string));
    	$result = [];
    	while( !empty($array) )
    	{
    		$slice = array_slice($array, 0, mt_rand(3, 5));
    		$result[] = implode(' ', $slice);
    		$array = array_diff($array, $slice);
    	}
    	return implode('<br />', $result);
    }
    // ----------
    $chaine = "un deux trois quatre cinq six sept huit neuf dix onze douze treize ";
    echo tronquer_chaine_mot_alea($chaine);
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2019
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour votre aide

  5. #5
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    5 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 5 560
    Points : 14 988
    Points
    14 988
    Billets dans le blog
    9
    Par défaut
    Salut,

    une troisième voie : remplacer les espaces dans ta chaîne par un séparateur de ton choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $str = "un deux trois quatre cinq six sept huit neuf dix onze douze treize";
    $esp = preg_match_all('~(\s)~', $str, $match, PREG_OFFSET_CAPTURE);   // on extrait la position de tous les espaces
    $pos = array_map(function($p) { return $p[1]; }, $match[0]);   // on arrange le résultat
    $nb  = count($pos);   // nb d'espaces total
    $i   = 0;
    while ($i <= $nb) {
        $i = rand($i, $i + 4);
        $str[$pos[$i]] = '|';
        $i += $i;
    }
    $res = explode('|', $str);
    # Dans la Création, tout est permis mais tout n'est pas utile...

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2019
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Re bonsoir,

    excusez-moi encore de vous déranger, mais quand je demande de découpé un texte qui possède des caractères spéciaux (é,à......), le résultat s'affiche avec des symbole du type é pour les é.

    Y t'il un moyen d'avoir le résultat avec les caractères spéciaux pris en compte.

    Merci beaucoup pour votre aide.
    Kevin

  7. #7
    Membre expert Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 1 781
    Points : 3 742
    Points
    3 742
    Par défaut
    Le problème vient du fait que tu affiches tes résultats dans une page html dont l'encodage n'est pas défini. Ajoute la balise: <meta charset="utf-8"/> dans le head.

    Pour la petite histoire: dans l'encodage utf-8 le caractère é est encodé sur 2 octets (C3 et A9), mais comme tu ne précises pas que l'encodage est utf-8, le navigateur utilise un encodage par défaut (probablement ISO-8859-1) où C3 correspond à Ã et A9 à ©.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2019
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    J'ai mis en place le code avec le header mais j'obtient toujours des "édition" au lieu de "édition" et des "Jusqu'Ã" au lieu de "jusqu'à"

    J'ai fais une faute dans le header ?

    De plus j'ai mis le | à coté de la balise <br> pour marquer la découpe (ligne 16)

    Pensez-vous que c'est comme cela qu'il faut l'écrire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?php
    header('Content-Type: text/html; charset=utf-8');
    ?>
    <?php
    function tronquer_chaine_mot_alea($string) {
     
    	$array = explode(' ', trim($string));
    	$result = [];
    	while( !empty($array) )
    	{
    		$slice = array_slice($array, 0, mt_rand(3, 5));
    		$result[] = implode(' ', $slice);
    		$array = array_diff($array, $slice);
    	}
    	return implode('|<br />', $result);
    }
    // ----------
    $chaine = "Jusqu'à édition papier magazine numérique offre duo Jusqu'à 50% de réduction et de nombreux cadeaux au choix Maigrir des hanches… Voilà votre objectif minceur des semaines à venir. Suivez le programme ! Même si on déteste nos hanches, on n’arrive pas toujours à savoir où elles commencent et où . Passée tous les jours sur la zone à traiter, elle permet de déstocker efficacement les cellules graisseuses. Premiers résultats dès trois semaines ! La brosse avec dentures de massage de la marque Santaflor, elle, élimine la cellulite en favorisant la circulation du sang. Pour les amatrices de sensations fortes, le short Slendertone galbe les fesses et tonifie les hanches par électrostimulations. Enfin, le fameux Silk’n Silhouette s’en prend aux capitons grâce à ses leds et à la chaleur qu’ils diffusent. Si on n’arrive pas à perdre des hanches malgré toutes ces méthodes, la chirurgie esthétique est une solution. Pour ce faire, les spécialistes appliquent la technique de la liposuccion. Le principe : les chirurgiens infiltrent une canule sous la peau pour aspirer la graisse qui nous gêne. L’intervention dure 1h30 environ, et est effectuée sous anesthésie générale. « Les résultats sont visibles à peu près six mois après l’opération. Les clientes en sont globalement satisfaites, si tant est que la qualité de la peau soit bonne, c’est-à-dire qu’elle n’ait pas subi trop de brutales variations de poids, et que l’on ait une bonne hygiène de vie », déclare le docteur Boolauck, chirurgien esthétique. Suivez-nous Newsletter Elle Zen Contacts";
    echo tronquer_chaine_mot_alea($chaine);
    ?>
    Merci beaucoup pour votre aide

    Kevin

  9. #9
    Membre expert Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 1 781
    Points : 3 742
    Points
    3 742
    Par défaut
    Je ne t'ai pas parler de header mais de la balise <meta charset="utf-8"/> qui se place entre les balises <head></head> dans une page html. Cela dit, envoyer un header au navigateur avec l'encodage est une bonne chose.

    Il n'en reste pas moins que tu as un problème d'encodage de caractères, car même l'affichage sur ce forum (comme tu peux le constater) n'est pas bon. Donc à un niveau ou à un autre l'encodage utf-8 est changé en encodage ISO-8859-1.

    Vérifie l'encodage utilisé par ton éditeur de code (et change le au besoin).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2019
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour votre aide à tous

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2019
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Excusez-moi de vous ré embêter.

    Je suis encore avec mes caractère spéciaux.

    J'ai mon code de découpe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    function tronquer_chaine_mot_alea($string) {
     
    	$array = explode(' ', trim($string));
    	$result = [];
    	while( !empty($array) )
    	{
    		$slice = array_slice($array, 0, mt_rand(3, 5));
    		$result[] = implode(' ', $slice);
    		$array = array_diff($array, $slice);
    	}
    	return implode('|<br />', $result);
    }
    // ----------
    $chaine = "Jusqu'à Édition papier magazine numérique, Jusqu'à  50% de réduction, offre duo Jusqu'à 50% de réduction et de nombreux cadeaux au choix Maigrir des hanches… Voilà votre objectif minceur des semaines à venir. Suivez le programme ! Même si on déteste nos hanches, on n’arrive pas toujours à savoir où elles commencent et où elles s’arrêtent exactement.Alors pour lever le voile sur cette partie du corps qui nous donne du fil à retordre, Cosmo vous vient en aide. La hanche est une articulation qui relie la cuisse au bassin.Concrètement, sur votre silhouette, la hanche se situe juste au dessus du bassin. Vous ne situez toujours pas ? Pour vous aider, pensez aux poignées d'amour : ces amas de graisse viennent se placer pile au niveau des hanches pour nous donner cette forme de « poire ».Et quand on a la morphologie en forme de poire, on est généralement sujette à de la cellulite. En matière d'amincissement comme dans beaucoup de domaines, il n'y a pas de secret. Maigrir des hanches est possible, dès lors que : - Vous surveillez votre alimentation :En éliminant les aliments trop gras et trop sucrés au profit d’aliments";
    echo tronquer_chaine_mot_alea($chaine);
    ?>
    J'ai trouvé cette expression régulière sur votre site
    https://www.developpez.net/forums/d9...ne-caracteres/
    qui apparemment doit résoudre le problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $chaine = preg_replace("#[^a-zA-Z]#", "", $chaine);
    sinon j'ai aussi cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    function enleverCaracteresSpeciaux($text) {
    $utf8 = array(
    '/[áàâãªä]/u' => 'a',
    '/[ÁÀÂÃÄ]/u' => 'A',
    '/[ÍÌÎÏ]/u' => 'I',
    '/[íìîï]/u' => 'i',
    '/[éèêë]/u' => 'e',
    '/[ÉÈÊË]/u' => 'E',
    '/[óòôõºö]/u' => 'o',
    '/[ÓÒÔÕÖ]/u' => 'O',
    '/[úùûü]/u' => 'u',
    '/[ÚÙÛÜ]/u' => 'U',
    '/ç/' => 'c',
    '/Ç/' => 'C',
    '/ñ/' => 'n',
    '/Ñ/' => 'N',
    '//' => '-', // conversion d'un tiret UTF-8 en un tiret simple
    '/[]/u' => ' ', // guillemet simple
    '/[«»]/u' => ' ', // guillemet double
    '/ /' => ' ', // espace insécable (équiv. à 0x160)
    );
    return preg_replace(array_keys($utf8), array_values($utf8), $text);
    }
    Comment je peux assembler l'une ou l'autre des solution avec le script de découpage pour supprimer les caractères spéciaux après la découpe

    Merci beaucoup pour votre aide

    Sincèrement,
    Kevin

Discussions similaires

  1. Quel script PHP d'édition de texte WYSIWYG en ligne choisir ?
    Par kagura dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 48
    Dernier message: 22/04/2012, 17h26
  2. texte du script php affiché dans la page résultat
    Par jlarras dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 26/02/2010, 12h48
  3. [Prototype] Récupérer du texte depuis le script php
    Par Haxor668 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 25/11/2009, 17h56
  4. [Configuration] Script PHP concaténant un fichier texte
    Par redvivi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 13/11/2007, 14h44
  5. [Librairies] Ch script PHP pour reconnaissance de texte (OCR)
    Par yvan02 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/05/2006, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo