begin process at 2010 03 15 17:33:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > EXTRAIRE DANS UNE CHAINE UNE SOUS CHAINE À PARTIR D'UN SÉPARATEUR

EXTRAIRE DANS UNE CHAINE UNE SOUS CHAINE À PARTIR D'UN SÉPARATEUR


 Information sur la source

Note :
1 / 10 - par 2 personnes
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Niveau :Débutant Date de création :14/03/2005 Date de mise à jour :14/03/2005 11:30:31 Vu :12 625

Auteur : loyousse

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Cette fonction vous permet d'extraire d'une chaîne une sous chaine à partir d'un séparateur.
exemple :
si on appelle ExtractChamp("essai;test",1,";"), ça renvoie "essai".
si on appelle ExtractChamp("essai;test;toto",3,";"), ça renvoie "toto".

Elle attend 3 parmètres qui sont une chaîne, le numéro de la sous chaîne a récupérer et le séparateur.
Si la chaine passée en paramètre ne contient pas le séparateur alors la fonction retourne "false".

Source

  • function ExtractChamp($chaine,$entier,$sep)
  • {
  • if($entier > 0)
  • {
  • $res=strtok($chaine,$sep); //découpe la chaine en segment avec le séparateur $sep.
  • if($res!="") //si la chaîne comporte au moins une fois le séparateur alors
  • {
  • for($i=1;$i<$entier;$i++)
  • {
  • $res=strtok($sep);//passe au segment suivant
  • }
  • }
  • }else{
  • $res=false;
  • }
  • return($res);//retourne le résultat
  • }
function ExtractChamp($chaine,$entier,$sep)
{
if($entier > 0)
{
    $res=strtok($chaine,$sep); //découpe la chaine en segment avec le séparateur      $sep.
    if($res!="") //si la chaîne comporte au moins une fois le séparateur alors
    {
        for($i=1;$i<$entier;$i++)
        {
            $res=strtok($sep);//passe au segment suivant
        }  
    }
}else{
  $res=false;
}

    return($res);//retourne le résultat        
}

 Conclusion

Laissez vos commentaires


 Historique

14 mars 2005 11:23:07 :
14 mars 2005 11:26:23 :
14 mars 2005 11:27:30 :
14 mars 2005 11:28:46 :
14 mars 2005 11:30:31 :

 Sources du même auteur

CONNEXION À UN SERVEUR FTP

 Sources de la même categorie

Source avec Zip GÉNÉRATEUR DE BALISE META KEYWORDS par ParseError
Source avec Zip Source avec une capture RACCOURCISSEUR D'URL par hairai
Source avec Zip GÉNÉRER UN MOT DE PASS ALÉATOIRE par narkos2
UNICODE TO HTML ENTITIES par CrazyShooter
Source avec Zip DÉBUTANT : FONCTION POUR TRANSFORMER UN TEMPS EN SECONDES EN... par MonkeyIsBack

Commentaires et avis

Commentaire de GRenard le 14/03/2005 11:06:50

À mon avis, c'est une source comme une autre vous allez dire, mais explode doit être pas mal plus rapide que ca ...

$tmp = explode(';', 'essai;test;toto');
echo $tmp[2]; // affiche toto

Commentaire de GRenard le 14/03/2005 11:10:35

Permet moi de rajouter que ce n'est pas un code initié, et si tu mets $entier <= 0, t'as une belle boucle infini.
Faudrait rajouter un petit if

Commentaire de loyousse le 14/03/2005 11:12:42

C'est vrai, je ne connaissais pas. Pour mon stage j'ai été obligé de faire cette fonction car je ne connaissais pas d'autres moyens de faire. Mais les 2 solutions marchent très bien.

Commentaire de malalam le 14/03/2005 11:14:30 administrateur CS

Hello,

ok, ca ,marche, mais je ne vois pas bien l'interet ?
Un explode() , puis recuperer la valeur voulue fait aussi bien l'affaire.  Et a mon avis le explode() est plus optimise vu qu'il est  fait pour ca.

Commentaire de loyousse le 14/03/2005 11:15:07

à mon avis si tu mets avec ta solution :
echo $tmp[-3];
ça va aussi planter. donc le probleme est present aussi avec ta solution.

Commentaire de loyousse le 14/03/2005 11:20:21

C'est vrai que quand on connait la fonction "explode" on ne voit pas l'intérêt, mais quand j'ai développé cette fonction je ne connaissais pas du tout explode.

Commentaire de malalam le 14/03/2005 11:28:10 administrateur CS

Oui oui desole je ne voulais pas en rajouter lol. Quand j'ai commence a ecrire le commentaire, il n'y avait aucun autre commentaire. Mais comme je bosse en meme temps, je suis un peu lent parfois pour ecrire...et entre temps GRenard avait ecrit ;-)

Pour te repondre, oui ($tmp[-3]), mais puisque tu fais une fonction, autant prevoir les erreurs qui pourraient se produire. C'est a toi de les gerer.

Et ok, tu ne connaissais pas explode() :-) Mais un conseil : php est BOURRE de fonctions...vraiment, il y en a beaucoup! Moi quand je cherche a faire un truc, je passe d'abord quelques heures dans la doc, je l'explore a fond, pour etre sur qu'il n'y a pas une ou des fonctions qui ne feraient pas a peu pres ce que je veux obtenir. On a parfois de bonnes surprises ;-)

Commentaire de GRenard le 14/03/2005 11:30:29

Bien sur je n'ai pas fait une fonction... si tu fais une fonction dans ta fonction tu vas faire
if(isset($tmp[$entier-1])
     return $temp[$entier-1];
else
     return NULL;

Commentaire de loyousse le 14/03/2005 11:34:29

J'ai modifié la source afin de renoyer False si l'entier est négatif et si il nya pas de séparateur dans la chaine.
J'avais récupéré un manuel php mais j'avais jamais trouvé la fonction explode. En plus d'habitude les fonctions sur les chaines de caractères commencent souvent par "str", donc meme si j'avais vu le nom de la fonction "explode" j'aurais pas eu l'idée d'aller voir de quoi elle parle.

Commentaire de malalam le 14/03/2005 11:50:35 administrateur CS

Bah, utilises plutot ca :

http://de2.php.net/manual/fr/function.explode.php

Enfin je veux dire, ce manuel (officiel). Il est pratique pour ca : toutes les fonctions pour traiter les chaines sont au meme endroit. Idem pour les tableaux, etc.

Commentaire de coucou747 le 17/03/2005 20:12:59

tu perds pas mal de temps...

tant que t'y est pour les vérifications, si tu demandes le 5 àme mot, et qu'il n'y a que 4* le séparateur...

Commentaire de GRenard le 17/03/2005 22:56:17

T'as essayé coucou ? non... ca retourne vide, et donc c'est correct.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales