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 :

compter et couper des mots selon leur longueur et ajouter un *


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut compter et couper des mots selon leur longueur et ajouter un *
    Bonjour,

    C'est fonction ci-dessous fonctionne très bien, cependant, j'aimerais la rendre plus précise et quelle ne coupe pas tout les mots au 4ème caractère. Je souhaiterais couper les mots selon leur nombre de caractère comme suit pour tout englober

    Si le mots clefs fait de 4 à 7 caractères => couper au 4ème en y ajoutant un *
    Si le mots clefs fait de 8 à 13 caractères => couper au 6ème en y ajoutant un *
    Si le mots clefs fait de 14 à 25 caractères => couper au 8ème caractère en y ajoutant un *

    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
    25
    <?php
     
    $keywordClean2 =" Végétal légumineuses une pomme anticonstitutionnellement";// mots clefs
     
    $keywordClean4 = " ";
    $i = 0;
     
    	foreach(explode(' ', $keywordClean2) as $w)
    	{
    		if(mb_strlen($w) > 4)
    		{
    			$keywordClean4 .= substr($w, 0, 4)."* ";
    			$i++;
    		}
    	if($i == 5)
    	break;
    	}
     
     echo"$keywordClean4"; // Vég* lég* pomm* anti*
     
     
     // Je souhaiterais qu'il affiche ceci :  Végé* légumi* pomm* anticons*
     
    // Comment faire pour qu'il coupe en fonction de la longueur du mot clefs ?  Du reste l'accent est compté comme 1 caractère ?		
     ?>
    Merci pour votre précieuse aide
    Yule

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    On peut certainement faire mieux, mais je me suis amusé à chercher une solution :

    Code php : 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    $keywordClean2 = " Végétal légumineuses une pomme anticonstitutionnellement";// mots clefs
     
    $keywordClean4 = " ";
     
    foreach (explode(' ',
        $keywordClean2)
             as
             $w)
    {
    switch(mb_strlen($w))
    {
        case 4 :
        case 5 :
        case 6 :
        case 7 :
            $cut=4;
            break;
        case 8 :
        case 9 :
        case 10 :
        case 11 :
        case 12 :
        case 13 :
            $cut=6;
            break;
        default :$cut=8;
            break;
    }
     $keywordClean4 .= substr($w,
             0,
         $cut) .
         "* ";
     
    }
     
    echo "$keywordClean4"; // Végé* légumi* pomm* anticons*

  3. #3
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut
    Merci ! c'est presque ça..

    Moi il m'affiche * Vég* légum* une* pomm* anticons*

    - Le une qui fait moins de 4 caractères ne devrait pas être pris en compte
    - Vég* = l'* est après 3 caractères et non 4
    - légum* = l'* est après 5 caractère et non 6

    Et il ne tient pas compte des 5 termes maxi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $keywordClean2 = " Végétal légumineuses une pomme anticonstitutionnellement terrible";// mots clefs
     
    if($i == 5)
    break;
    Merci d'avance
    Yule

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Ce n'est pas si difficile de corriger le code de laurentSc, SI ?

    2- https://www.php.net/manual/fr/function.mb-substr.php

  5. #5
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut
    Ben malheureusement SI....

    J'ai essayé ceci


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
    $keywordClean2 = " Végétal légumineuses une pomme anticonstitutionnellement terrible";// mots clefs
     
    $keywordClean4 = " ";
     
     
    $i = 0; // ajout yule
     
    foreach (explode(' ',
        $keywordClean2)
             as
             $w)
    {
     
    if(mb_strlen($w) > 4){ // ajout yule
     
    switch(mb_strlen($w))
    {
        case 4 :
        case 5 :
        case 6 :
        case 7 :
            $cut=4;
            $i++; // ajout yule
            break;
        case 8 :
        case 9 :
        case 10 :
        case 11 :
        case 12 :
        case 13 :
            $cut=6;
            $i++; // ajout yule
            break;
        default :$cut=8;
        $i++; // ajout yule
            break;
     
     
    }
     $keywordClean4 .= substr($w,
             0,
         $cut) .
         "* ";
     
    // ajout yule
    if($i == 3)
    break;
     
    }
    }
     
    echo "$keywordClean4";
    J'arrive à

    Vég* légum* pomm* et il devrait m'afficher Végé* légumi* pomm*

    Mais le coup des accents qui compte 1 caractère en plus, je vois pas trop..

    J'ai donc essayé ainsi, ca fonctionne mais ca pas l'air très propre...

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    $keywordClean2 = " Végétal légumineuses deux pomme anticonstitutionnellement terrible";// mots clefs
     
    $keywordClean4 = " ";
     
    $i = 0;
    foreach (explode(' ', utf8_decode($keywordClean2)) as $w)
    {
     
    if(mb_strlen($w) > 4){ // ajout yule
     
    switch(mb_strlen($w))
    {
    	case 4 :
        case 5 :
        case 6 :
        case 7 :
            $cut=4;
    		$i++;
    		break;
     
        case 8 :
        case 9 :
        case 10 :
        case 11 :
        case 12 :
        case 13 :
            $cut=6;
    		$i++;
            break;
     
        default :$cut=8;
    		$i++;
            break;
    }
     $keywordClean4 .= utf8_encode(substr($w, 0, $cut)) ."* ";
     
     
    // yule
    if($i == 4)
    break;
     
    }
    }
     
    echo "$keywordClean4";
    Pour ce résultat : Végé* légumi* pomm* anticons*

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Ca fait le taf :
    Code php : 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
    $keywordClean2 = " Végétal légumineuses une pomme anticonstitutionnellement terrible";// mots clefs
     
    $keywordClean4 = " ";
     
    $keywordClean3=explode(' ',$keywordClean2);
    $keywordClean2=[];
    $i=0;
    for ($i=0;$i<6;$i++)
        $keywordClean2[]=$keywordClean3[$i];
     
    foreach ($keywordClean2  as   $w)
    {
        $nothing=false;
        switch(mb_strlen($w))
        {
            case 4 :
            case 5 :
            case 6 :
            case 7 :
                $cut=4;
                break;
            case 8 :
            case 9 :
            case 10 :
            case 11 :
            case 12 :
            case 13 :
                $cut=6;
                break;
            case 14 :
            case 15 :
            case 16 :
            case 17 :
            case 18 :
            case 19 :
            case 20 :
            case 21 :
            case 22 :
            case 23 :
            case 24 :
            case 25 : $cut=8;
                break;
            default :
                $nothing=true;
                break;
        }
     if(!$nothing) $keywordClean4 .= mb_substr($w,0,  $cut) . "* ";    // utiliser mb_substr si des caractères accentués ds la chaîne
     
    }
     
    echo "$keywordClean4"; //  Végé* légumi* pomm* anticons*

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. déplacer des fichiers selon leur extension
    Par chicabonux dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 12/10/2009, 16h42
  2. Lire des fichiers selon leur nom
    Par guiguilelotois dans le forum LabVIEW
    Réponses: 4
    Dernier message: 18/05/2009, 13h55
  3. Compter l'apparition des mots
    Par blackmanyo dans le forum Excel
    Réponses: 5
    Dernier message: 13/11/2008, 15h48
  4. [Flash MX] Supprimer des carte selon leurs valeurs
    Par Lenalyon dans le forum Flash
    Réponses: 1
    Dernier message: 01/09/2007, 12h18
  5. taille des textbox selon leur contenu
    Par christi dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/02/2007, 16h20

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