IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 2
    Points
    2
    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
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    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
    Invité
    Invité(e)
    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);

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour votre aide

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    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);

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 2
    Points
    2
    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
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 : 2 858
    Points : 6 556
    Points
    6 556
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 2
    Points
    2
    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
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 : 2 858
    Points : 6 556
    Points
    6 556
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour votre aide à tous

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 2
    Points
    2
    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, 16h26
  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, 11h48
  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, 16h56
  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, 13h44
  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, 16h50

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