Extraire les mots et pas les URLs sous php5

abcd0 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   97
 
ce qu'a écrit nagashima est tout à fait correct d'après les informations que tu donnes :)
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
il m'affiche mon fichier tel qu'il est!
0