CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [PHP] fonction pour retirer une lettre d'un mot

DébutPage précedente
1
Page suivantePage suivante
Listas Listas
MP
Niveau 10
28 mai 2015 à 22:06:03

Bonjour

pour m'entraîner j'essaye de faire une fonction PHP qui lit une phrase prise en paramètre
et qui va remplacer chaque mot par son numéro d'emplacement dans la chaîne de caractère genre si j'veux retirer les R :

"Bonjour Monsieur comment vous allez ?"

sera remplacé par :

"6 15 comment vous allez ?" (6 parce que le 'r' de "Bonjour" était le 6ème caractère etc)
c'est un entraînement pour un exam en php :oui:

<?php

function caractere ($mot){
$i = 0;
$j = 0;
$length = strlen($mot);
$debutmot = $i;
	while($i < $length){
		if ($mot[$i] == ' ')
			$debutmot = $i+1;
		while ($mot[$i] =! ' '){ // RAJOUTER ICI LA BOUCLE POUR VERIFIER SI ON PASSE UN MOT ETC
			if ($mot[$i] == 'r'){
				$j = $debutmot+1;
				$mot[$j] = 'T'; // on remplace la 1ère lettre du mot par la longueur
					while ($j < $length-1){ // avant de remplacer par le reste
						$mot[$j] = $mot[$j+1];
						$j++;
					}
				$mot[$length-1] = '';
			}
		$i++;
		}
		if ($mot[$i] == ' ')
			$i++;
	
	}
return $mot;

}


$word2 = "bonjour";
echo caractere("Bonjoure");

?>

le problème c'est qu'elle reste bloquée dans une boucle on dirait mais laquelle ??

Message édité le 28 mai 2015 à 22:08:46 par Listas
dark_drow dark_drow
MP
Niveau 15
28 mai 2015 à 22:42:24

utilise des for, ça évite ce genre de truc et c'est plus simple à débug je trouve

Listas Listas
MP
Niveau 10
28 mai 2015 à 23:24:05

d'acc' j'vais essayer

deepblue deepblue
MP
Niveau 13
29 mai 2015 à 00:46:49

Si tu as 2 "r" dans un mot, ça doit réagir comment ?

Listas Listas
MP
Niveau 10
29 mai 2015 à 00:49:45

ah bah pareil c'est dèsq ue ya un 'r' dans le mot quoi

tzrgus2 tzrgus2
MP
Niveau 12
29 mai 2015 à 12:39:32

Ton paramètre doit être un tableau?

tzrgus2 tzrgus2
MP
Niveau 12
29 mai 2015 à 13:27:25

<?php

function caractere ($mot){
$i=0; //compteur de while
$newTab = []; //tableau qui va nous servir
$motTab = explode(" ", $mot); // on explose la chaine par les espace et sa met dans un tableau
$key = count($motTab);//on compte le nombre d'entée
while ($i < $key) { //tant que $i n'est pas au nombre d'entrée
$result = strpos($motTab[$i], "r"); // on cherche la position d'un r dans la valeur
if($result > 0) { // si $result est supèrieur à 0 c'est quil ya un r
array_push($newTab, $result); // alors on push sa position dans un nouveau tableau
$i++; //et on incrémente
} else { // sinon c'est qu'il n'ya pas de r dans le mot
array_push($newTab, $motTab[$i]); //on push donc le mot
$i++; // on oubli pas d'incrémenter bien sur
}
}
$nouvelleChaine = implode(" ", $newTab); // on "implose" notre nouveau tableau pour en refaire une chaine
echo $nouvelleChaine; // et la j'affiche le resultat

}
caractere("Bonjoure je suis");

?>
voila, je te laisse analyser le code.

Listas Listas
MP
Niveau 10
31 mai 2015 à 16:21:01

alors euh j'ai analysé mais mec j'sais pas si t'as essayé mais il supprime que le 'r' du 1er mot :fou:

genre un truc style :
"Bonjour je ne trouve plus mon rateau" il marche pas :fou:

en fait quand le 'r' est au début il compte pas on dirait

tzrgus2 tzrgus2
MP
Niveau 12
03 juin 2015 à 15:09:42

oui dsl je viens de reteste et ce n'est pas if($result>0), mais if($result !== false).
Apres tu as besoin qu'il te retourne la position et le dernier te retourne la position 0 car les position commence par zero, donc si j'ai bien compris c'est ce que tu recherche?

gromouton gromouton
MP
Niveau 6
03 juin 2015 à 21:11:55

tu peux le faire en 6 lignes avec preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE)
http://php.net/manual/en/function.preg-match.php

le regex : '/\w*[' . $char . ']\w*/i'

ça te renvoie un tableau ($matches) avec tous les mots contenant ton caractère et leur position dans le texte, il ne reste plus qu'a les remplacer par les position fournies

Message édité le 03 juin 2015 à 21:14:07 par gromouton
DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment