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 :

Extraire les n premiers caractères d'1 chaine jusqu'à un espace [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut Extraire les n premiers caractères d'1 chaine jusqu'à un espace
    Bonjour,

    Je voudrais afficher un tableau d'enregistrement (en provenance de ma Bdd), et au lieu d'afficher tous le texte,
    je voudrais afficher seulement les trois premières lignes disons, afin d'afficher un certains nombres d'enreg. sur la même page....
    (un peu comme ici :
    http://www.illegalparty.com/rubrique94.html
    )

    Je sais qu'il y a la fonction substr mais elle ne permet pas de s'arrêter pile à la fin d'1 mot...
    Et il y a la fonction wordwrap aussi, et je pense que le truc c'est un mix entre les 2 mais j'avoue que
    je sèche complètement sur comment faire ce "mix" entre ces 2 fonctions...
    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Pour ce qui est du site linké, il doit utiliser une fonction de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function tronque($message, $nb) {
    	if (strlen($message) > $nb) {
    		$message = substr($message, 0, $nb);
    		$position_espace = strrpos($message, ' '); 
    		$texte = substr($message, 0, $position_espace);  
    		$message = $texte.' [...]'; 
    	}
    	return $message; 
    }
    ?>
    En espérant que ça puisse t'aider à faire ce que tu souhaites (je n'ai pas bien compris )

  3. #3
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut
    Je sais pas trop si c'est cela que tu veux mais si tu veux afficher les 3 premiers enregistrements, tu met un

    dans ta requète.

  4. #4
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    enfait, il faut faire attention à deux fois à ne pas couper les mots

    wordwrap va très bien le faire, mais substr ???

    tu peux via une expression regulière simuler un substr quifera attention aux mots
    imaginons qu'on veux récupérer les 200 caractères d'un textes. et après les séparés par ligne de 100
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tontexte = "Alii summum decus in carruchis solito altioribus et ambitioso vestium cultu ponentes sudant sub ponderibus lacernarum, quas in collis insertas cingulis ipsis adnectunt nimia subtegminum tenuitate perflabiles, expandentes eas crebris agitationibus maximeque sinistra, ut longiores fimbriae tunicaeque perspicue luceant varietate liciorum effigiatae in species animalium multiformes."; // généré automatiquement :p
    $nb = 200;
    $tontexte = (strlen($tontexte) > $nb)?ereg_replace("(.{".$nb."})( .*)$","\\1 (...)", $tontexte) : $tontexte;
     
    $tontexte = wordwrap($tontexte, 100);
     
    echo nl2br($tontexte);

  5. #5
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Perso, j'aime bien la fonction de SpiritOfDoc !

    Elle commence par couper la chaine jusqu'à un certain endroit. Ensuite elle va rechercher la dernière position d'un espace (donc fin d'un mot) et recoupe la chaine jusqu'au dernier espace !

    Moi je dis gg !

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Doit y avoir un équivalent dans la FAQ ou quelques choses comme ça

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Sinon, peut être prendre les n premiers caractères de la chaine A (le texte), les enlever de la chaine(les enregistrer dans la chaine B, nouvelle chaine), et ensuite, prendre tous les caractères de la chaine A jusqu'au premier espace et les raouter à la chaine B ?

    ça se ferait ça ? (désolé, je ne sais pas encore comment on coupe une chaine )

  8. #8
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut
    Merci à tous, et notament SpiritOfDoc et SphynXz
    Et effectivement je vais utiliser celle de SpiritOfDoc qui correspond pile-poil à ce que je cherchais (et puis les regex, c'est un peu trop nouveau pour moi)
    Merci encore...

    (P.S: mea culpa, je viens de trouver cette solution dans la FAQ :
    http://php.developpez.com/faq/?page=...haine-troncate
    )

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

Discussions similaires

  1. Récupérer les n premiers caractères d'une chaine.
    Par derfatypik dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2008, 12h45
  2. Réponses: 2
    Dernier message: 04/10/2007, 12h31
  3. Réponses: 2
    Dernier message: 19/06/2007, 17h37
  4. Réponses: 3
    Dernier message: 01/11/2006, 15h27
  5. Extraire les n premiers termes d'une chaine
    Par knecmotet dans le forum C++
    Réponses: 4
    Dernier message: 03/03/2005, 16h05

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