Découpage d'une chaine de caractères en tableau de une case par caractère

SkyCrasher Messages postés 45 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 6 janvier 2022 - 8 avril 2013 à 11:11
 nicotontige - 9 avril 2013 à 16:21
Bonjour,
Alors voilà j'ai une chaine de caractères comprenant des délimiteur de type "?" "=" "&".
Je vous donne un exemple:
- chaine = url.com?var1=mot1&var2=mot2
Je souhaite éclater l'url en récupérant mot1 et mot2.
Ensuite je veux éclater mot1 et mot2 en tableau de caractères avec un caractère par case.
Enfin comparer mot1 dans la base de données en comptabilisant les doublons.
Donc voilà je fais appel à codes sources pour m'aider...
Si vous avez des sources préexistantes ou les fonctions php pour effectuer ce script.
Merci d'avance pour votre coopération.

6 réponses

sylvain64520 Messages postés 130 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 7 juin 2013
8 avril 2013 à 11:21
Bonjour,

En php, il suffit de note $str[0] pour avoir le caractère à la position 0 de la chaîne de caractère $str.

A partir de là, tu fais une boucle entre la position 0 et $str.lenght.
Tu fais un check sur toutes tes valeurs en vérifiant à chaque fois si c'est un '=' ou un '&'.
Et tout ce qui existe entre ces 2 caractères, tu peux le mettre dans un tableau.
0
SkyCrasher Messages postés 45 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 6 janvier 2022
8 avril 2013 à 12:06
Donc, si j'ai bien compris :
Je récupère mot1 (par exemple: "positif")
<?PHP
//Après je fais :
$str[0] = $mot1; // contient "p"
//Puis une boucle :
for($i=0;$i<=$str.lenght;$i++)//
{
$str[i] = $mot1;
}
//Et enfin j'utilise le tableau :
//$str[5] = "i";
echo $str; // renvoie "positif"
?>

C'est comme ça que je dois faire ?
$i<str.lenght ou $i<=str.lenght ?
0
Quand tu as récupérer le mot dans ta chaine $str, alors il suffit de faire $str[index_du_caractère].
Ex :
<?PHP
$str = "positif";
//Puis une boucle :
for( $i = 0 ; $i < strlen($str) ; $i++)//
{
echo $str[$i];
}
//affiche positif
?>
0
sinon, pour récupérer les mots, une solution (peut-être pas la meilleure, mais qui fonctionne) :
<?php
//on stocke la chaine dans la variable
$chaine = "url.com?var1=mot1&var2=mot2";

//on explose la chaine avec & comme séparateur
$pieces = explode("&", $chaine);

//boucle, tant qu'il y a des morceaux
for ($i = 0 ; $i < count($pieces) ; $i++ ) {
$miettes = explode("=", $pieces[$i]); //on explose avec comme séparateur =
$mot[$i] = $miettes[1]; //on enregistre la variable dans un tableau
}

for ($i = 0 ; $i < count($mot) ; $i++ ) {
echo $mot[$i]; //on effectue la fcontion que l'on veut sur les mots
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SkyCrasher Messages postés 45 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 6 janvier 2022
9 avril 2013 à 12:40
D'accord parfait j'ai la méthode plus ou moins et l'algorithmique donc ça va aller mais une dernière question:

Maintenant on prends plusieurs chaines :
Exemples :

$chaine1 = "url.com?var1=mot1&var2=mot2";
$chaine2 = "url.com?varx=mot3&vary=mot2";
$chaine3 = "url.com?varz=mot4&varw=mot3";

Je cherche une idée pour reconnaitre/comparer les doublons et récupérer sur chaine1 et chaine2 le mot2 et sur chaine2 et chaine3 le mot3.
En fait, c'est assez dur à expliquer c'est des url encodées avec différentes variables mais la meme valeur parfois, et je cherche donc à récupérer les mots les plus utilisés sur l'ensemble des url...

Donc d'abord :
1. Stocker toute l'url dans un tableau d'une case par caractère.
2. Exploser l'url en morceaux.
3. Comparer les doublons à l'aide du tableau de caractères et ainsi une autre boucle interne à l'explosion.
4. Reconstituer les mots qui sont reconnus en tant que doublon.

Je vais y travailler, je n'ai pas de délai particulier, je prends un maximum d'idées et dès que je peux je fais un premier jet voir ce que ça peut donner. En tout cas merci pour vos réponses et si vous avez d'autres idées ou optimisation, fonctions etc...n'hésitez pas.
0
pas très difficile, mais je ne vois toujours pas l'intérêt séparer les mots caractères par caractères.
Tu veux savoir quels sont les mots les plus utilisés si j'ai bien compris, alors pourquoi chercher par caractère ?

pour faire simple, il te suffit de faire un tableau avec pour index les mots
ex :
$tab["mot1"]
$tab["mot2"]

et de mettre en face le nombre d'occurence rencontré.
ex :
$tab["mot1"] = 2
$tab["mot2"] = 5

après un simple tri sur ton tableau permet de rechercher les plus utilisés, de faire un peu ce que tu veux.
L'algo sera de la sorte.

Quand mot trouvé
<?
if ( in_array($tab, $mot)) {
   $tab[$mot] += 1
} else {
   $tab[$mot] = 1
}
?>
0
Rejoignez-nous