Position des caractères dans une chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Position des caractères dans une chaine

par FredoMkb » 17 mai 2008, 15:04

Bonjour :)

Voici 3 pistes :

1. On connaît l'emplacement (l'index) où placer le nouvel extrait :
$chaineOriginale = 'Et un cafe';
$extraitDebut = 3;
$extraitNouveau = 'un the ou ';
$chaineNouvelle = substr($chaineOriginale, 0, $extraitDebut).$extraitNouveau.substr($chaineOriginale, $extraitDebut);
echo $chaineNouvelle; // 'Et un the ou un cafe'
2. On ne connaît pas l'emplacement où placer le nouvel extrait, mais on connaît le premier extrait de texte devant lequel placer le nouvel extrait :
$chaineOriginale = 'Et un cafe';
$extraitOriginal = 'un';
$extraitNouveau = 'un the ou ';
$positionExtrait = strpos($chaineOriginale, $extraitOriginal);
$chaineNouvelle = substr($chaineOriginale, 0, $positionExtrait).$extraitNouveau.substr($chaineOriginale, $positionExtrait);
echo $chaineNouvelle; // 'Et un the ou un cafe'
3. On ne connaît pas l'emplacement où placer le nouvel extrait, mais on connaît le premier extrait de texte devant lequel placer le nouvel extrait et on est sûr que l'extrait repère est unique (il n'existe pas plusieurs fois dans le texte original) :
$chaineOriginale = 'Et un cafe';
$extraitOriginal = 'un';
$extraitNouveau = 'un the ou ';
$chaineNouvelle = str_replace($extraitOriginal, $extraitNouveau.$extraitOriginal, $chaineOriginale);
echo $chaineNouvelle; // 'Et un the ou un cafe'
Voilô... d'autres solutions sont également possibles, selon ce qu'on a exactement comme informations et données au départ, en utilisant les expressions régulières par exemple...

à+ :)

par Invité » 17 mai 2008, 12:36

Je suis allé voir les fonctions de manipulation de texte, et aucune ne peut le faire.

Je pense faire une fonction comme ça :
$chaine = 'Et un café';
$position = 2;
$chaine = substr($chaine, 0, $position).'un thé ou '.substr($chaine, $position, (strlen($chaine)-$position));

par ouckileou » 17 mai 2008, 11:05

Persone n'a une idée pour la fonction d'insertion? :?:
Tu es allé voir la liste des fonctions de manip de chaînes ?

Si aucune ne le fait directement tu pourrais en utiliser d'autres pour faire la tienne, celle que t'as filé Hywan par exemple.

par Invité » 17 mai 2008, 10:47

Bonsoir
Je ne voudrais pas dire une énorme bêtise, si c'est le cas on me corrigera, mais il me semble que le 1er caractère a toujours comme indice...0...
J'avais oublié, merci. :D
Regarde du côté des manipulations de chaîne de caractères, et plus particulièrement la fonction substr().
Merci pour la fonction.

Persone n'a une idée pour la fonction d'insertion? :?:

par Boro64 » 17 mai 2008, 06:06

Wouah ma première bonne réponse en php! :D
Trop fier je suis!

par Hywan » 17 mai 2008, 00:02

Hey :),

C'est exact. On commence toujours à partir de 0. Regarde du côté des manipulations de chaîne de caractères, et plus particulièrement la fonction substr().

par Boro64 » 16 mai 2008, 22:14

Bonsoir
Je ne voudrais pas dire une énorme bêtise, si c'est le cas on me corrigera, mais il me semble que le 1er caractère a toujours comme indice...0...

Position des caractères dans une chaine

par afowl » 16 mai 2008, 22:06

Salut à tous, :D

J'ai une chaine de texte normale, une position (par exemple 4 pour le quatrième caractère) et une longueur (de caractère, par exemple 2). J'aimerais pouvoir insérer du texte avant le caractère de la position connue et obtenir le mot qui commence au cinquième caractère et qui est long de 2 caractères.

Donc :
$chaine = 'Et un café';
echo fonction_x(4, 2, $chaine); // qui devrait retourner "un"
echo fonction_y(4, 'un thé ou ', $chaine); // qui devrait retourner "Et un thé ou un café"
Merci si vous avez des réponses :lol: