Extraire les mots et pas les URLs sous php5

Fermé
abcd0 Messages postés 56 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 10 juillet 2013 - 17 avril 2013 à 09:43
 Utilisateur anonyme - 18 avril 2013 à 14:41
Bonjour,

j'ai un fichier qui contient un ensemble de ligne, chaque ligne est sous forme:
debut ?mot mot mot mot? http:....
moi je voudrais extraire juste ces mots qui se trouvent entre ces deux ? dans des tableaux (chaque ligne dans un tableau pour que chaque mot dans tab[i])
est ce que quelqu'un a une une idée comment faire ça!!!
merci d'avance pour votre aide
A voir également:

2 réponses

Utilisateur anonyme
17 avril 2013 à 10:54
salut !

pour ca tu peux utiliser les expressions régulières :

$sourcestring="?mot mot mot? http:....";
preg_match_all('/\?(.*?)\?/',$sourcestring,$matches);
$Resultat = $matches[0][1]


$Resultat sera égal à "mot mot mot"

et ensuite tu fais un split pour récupérer chaque mot dans une ligne de tableau :

$tab = split(" ",$Resultat );



tu moi si ca te vas.

naga
1
abcd0 Messages postés 56 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
17 avril 2013 à 11:21
les mots sont différents d'une ligne à une autre; je les juste donner comme exemple ce sont des phrases entre les ? je ne sais pas juste comment tester par exemple par rapport à ce qui est entre ces deux "?" par exemple
0
Freedomsoul Messages postés 509 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 avril 2013 97
17 avril 2013 à 11:54
ce qu'a écrit nagashima est tout à fait correct d'après les informations que tu donnes :)
0
Utilisateur anonyme
17 avril 2013 à 13:09
oui en fait j'ai noté mot pour l'exemple, mais l'expression régulière te permettra de récupérer ce qui est contenu entre deux "?", les mots exacts y sont indépendant
0
abcd0 Messages postés 56 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
17 avril 2013 à 13:20
merci bcp pour vos réponses mais il m'affiche cette erreur :

PHP Notice: Undefined offset: 0 in cour.php on line 10 // la ligne 10 est $Resultat = $matches[0][1]
0
Utilisateur anonyme
17 avril 2013 à 13:25
je pense que ca vient du fait que j'ai forcé la lecture d'un élément et que tu n'as pas de résultats via preg_match_all.
Peux tu me montrer la partie de code qui correspond?
Et il serai intéressant pour toi de voir un tutoriel sur les regex.

à noter : j'ai utilisé le générateur myregex (https://www.myregextester.com/index.php mais je ne suis pas certain que les '/' en début et fin de chaine te sois utiles, essaye peu être :
'\?(.*?)\?'


et sinon, suite au preg_match_all, pour ton test, tu rajoute la ligne :

"<pre>".print_r($matches,true);


afin de voir tous les résultats de ta regex.
0
Utilisateur anonyme
17 avril 2013 à 15:31
deux fois car
0 : la chaine qui correspond à ta regex complete
1 : la chaine qui correspond aux première parenthèse
2 : la chaine qui correspond aux secondesparenthèse
...


et le truc c'est que là on voit 'array()', et donc que tu essaye d'appliquer ta regex sur un tableau et non une chaine ... revois peu être la construction de tout ton tableau
0
abcd0 Messages postés 56 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
18 avril 2013 à 13:22
j'ai essayé mais il me retourne un tableau vide, quelqu'un peut me donner un site où je peux m'inspirer!!!
merci
0
Utilisateur anonyme
18 avril 2013 à 13:48
il y a une chose bizard quand même, il affiche ta chaine avant le '<pre>', peux tu me copier ton code? (la partie dont on parle seulement ^^)
0
abcd0 Messages postés 56 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
18 avril 2013 à 14:01
for ($i=0; $i<$nb; $i++)
{
for ($j=0; $j<count($tab[$i]); $j++){


preg_match_all('/\?(.*?)\?/',$tab[$i][$j],$matches);
echo "<pre>".print_r($matches,true);
echo $tab[$i][$j]."</pre>";

}
}
0
Utilisateur anonyme
18 avril 2013 à 14:04
essaye juste de faire :

for ($i=0; $i<$nb; $i++) 
{ 
for ($j=0; $j<count($tab[$i]); $j++)
{ 

echo $tab[$i][$j];

} 
}


et vérifie ce qu'il y a bien les chaines non découpées.
0
abcd0 Messages postés 56 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
18 avril 2013 à 14:13
il m'affiche mon fichier tel qu'il est!
0