Page 1 sur 1

travail sur chaine de caractère

Posté : 17 oct. 2006, 18:13
par sacco
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

Posté : 17 oct. 2006, 18:40
par BeRoots
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

Posté : 18 oct. 2006, 13:05
par goeb
ou bien tu peux faire :
$s = "12334tontexte 7777";
$s = substr($s, 5); // "tontexte 7777"
list ($a, $b) = explode(" ", $s, 2); // $a contient "tontexte"

Posté : 18 oct. 2006, 15:07
par Hubert Roksor
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.

Posté : 23 oct. 2006, 21:45
par sacco
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