travail sur chaine de caractère

Eléphant du PHP | 180 Messages

17 oct. 2006, 18:13

Bonjour,

je cherche comment effectuer grace a strpos et substr à récuperer une chaie variable par son nombre de caractère mais toujours à la même position.

Je sais utiliser strpos et substr avec des positionnement fixe .

Pour résumer si je dois récuperer une chaine et m'arrêter dès que je trouve un espace donc fin de la chaine

mercii pour info

Mammouth du PHP | 843 Messages

17 oct. 2006, 18:40

si je comprend bien, tu veut récuperer le début de la chaine jusqu'au premier espace exclus :-k

si c'est bien ça, regarde le tutoriel de ripat sur les expressions regulière car tu va devoir utiliser une regex et la fonction preg_match() ;)

TUTORIEL DE RIPAT
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 413 Messages

18 oct. 2006, 13:05

ou bien tu peux faire :
$s = "12334tontexte 7777";
$s = substr($s, 5); // "tontexte 7777"
list ($a, $b) = explode(" ", $s, 2); // $a contient "tontexte"
--
Goeb

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 oct. 2006, 15:07

En fait je pense que la première idée de sacco était la bonne : trouver le premier espace et prendre tout ce qui le précède. Il n'est pas nécessaire d'apprendre les expressions régulières (même s'il faudra bien qu'il s'y mette un de ces jours ;)) ou décomposer toute la chaîne avec explode() (plutôt gourmand en ressources).

Donc pour en revenir au problème, comment trouve-t'on le premier espace ?
$pos = strpos($chaine, ' ');
S'il n'y a pas d'espace, strpos() renverra FALSE. On a qu'à ajouter un "if" pour vérifier ce cas. Attention à ne pas confondre "FALSE" et "0" (voir le manuel de strpos()).
if ($pos !== FALSE)
{
   $chaine = substr($chaine, 0, $pos);
}
Et voilà, s'il y a un espace, $chaine est tronquée jusqu'au premier espace.

@sacco: ce forum est réservé aux problèmes spécifiques à PHP 5, je déplace ce sujet dans le forum pour débutants.

Eléphant du PHP | 180 Messages

23 oct. 2006, 21:45

oui je suis d'accord mais cela voudrait dire que je connais la chaine. Alors que le seul param invariable est la position de celle-ci.

En gros il faut que mon pointeur soit à x,y et que je ramasse la chaine de caractère qui suit jusqu'à sa fin