Page 1 sur 1
preg_match: Rechercher dans un tableau
Posté : 31 mai 2013, 04:31
par rimie
Bonjour,
J'ai un tableau des fruits, et je voudrais rechercher, en utilisant preg_match, le terme 'pommes' par exemple, alors que dans mon tableau il y a 'pomme':
$fruits = array('pomme', 'fraise', 'kiwi');
merci
Re: preg_match: Rechercher dans un tableau
Posté : 31 mai 2013, 07:43
par ghost5922
Bonjour,
2 solutions
1premier
tu peu faire un implode pour tous mettre dans une chaine se qui donnerai
$var='|0_pomme|1_fraise|2_kiwi|';
puis dans ta regex tu récupéré le numéro de la key du tableau + la valeur si tu veux juste vérifie la presente pas besoin de la key puis une regex
if(preg_match('#pomme[s]"#isU',$var,$matches)){
}
ou un foreach pour tester chaque valeur
foreach($array as $valeur){
if(preg_match('#pomme[s]"#isU',$var,$matches)){
}
}
Re: preg_match: Rechercher dans un tableau
Posté : 01 juin 2013, 01:41
par rimie
j'ai deja essaye cette methode (la 2eme):
// exemple de phrase
$contenu = 'Je mange des fruits, comme la banane, les pommes et des kiwis ...'; // j'aurais 2 resultats (pomme et kiwis)
// a chercher
$fruits = array('pomme', 'fraise', 'kiwi');
foreach($fruits as $k)
{
if(preg_match('#'.$k.'#i', $contenu))
{
$e = 'Le mot "'.$k.'" a ete trouve.';
return true;
}
return false;
} // end foreach
dans ce cas, si j'ai plusieurs resultats, j'aurais:
Le mot "x" a ete trouve
Le mot "y" a ete trouve
Le mot "z" a ete trouve
etc
peut on avoir un resultat comme (disant 2 resultats ont ete trouve):
// exemple de phrase
$contenu = 'Je mange des fruits, comme la banane, les pommes et des kiwis ...'; // j'aurais 2 resultats (pomme et kiwis)
// a chercher
$fruits = array('pomme', 'fraise', 'kiwi');
foreach($fruits as $k)
{
if(preg_match('#'.$k.'#i', $contenu))
{
$e = '"'.$k.'" ==> 'ICI sont equivalent de recherche dans le contenu';
return true;
}
return false;
} // end foreach
2 resultats trouves:
pomme ==> pommes
kiwi ===> kiwis
Re: preg_match: Rechercher dans un tableau
Posté : 01 juin 2013, 08:52
par ghost5922
Bonjour,
<?php
// exemple de phrase
$contenu = 'Je mange des fruits, comme la banane, les pommes et des kiwis ...'; // j'aurais 2 resultats (pomme et kiwis)
// a chercher
$fruits = array('pomme', 'fraise', 'kiwi');
$i=0;
$mot='';
foreach($fruits as $k){
if(preg_match('#'.$k.'[s]#i', $contenu,$smatch)){
$i++;
$mot.=$k." ==> ".$smatch[0]."<br />";
}
}
if($i>=1){
$mot=substr($mot,0,-2);
echo $i." resultats trouves:<br /><br />".$mot;
}
else{
echo'Aucun mot trouve';
}
?>
affichera
2 resultats trouves:
pomme ==> pommes
kiwi ==> kiwis
Re: preg_match: Rechercher dans un tableau
Posté : 01 juin 2013, 09:32
par rimie
merci ghost5922, je pense que le [s] est possible d'etre changeable:
pommes ==> pomme
kiwis ==> kiwi
pomme-de-terre ==> pomme
le dernier cas est possible, si on cherche pomme, on peut trouver pomme-de-terre dans notre contenu, alors comment faire pour l'afficher telle qu'elle est dans le contenu?
Merci
Re: preg_match: Rechercher dans un tableau
Posté : 01 juin 2013, 10:19
par ghost5922
Re,
tu veux pourvoir le trouve ou justement ne pas le trouve ?
car avec le code dessus je ne retrouve pas pomme dans pomme-de-terre ou alors tu le tape pomme de terre
Re: preg_match: Rechercher dans un tableau
Posté : 03 juin 2013, 03:35
par rimie
je veux trouver le mot pomme-de-terre aussi
Re: preg_match: Rechercher dans un tableau
Posté : 03 juin 2013, 09:59
par ghost5922
ok faut modifier un peu la regex et utilise preg_match_all
Re: preg_match: Rechercher dans un tableau
Posté : 03 juin 2013, 10:09
par ghost5922
Re,
test quelque chose comme
<?php
// exemple de phrase
$contenu = 'Je mange des fruits, comme la banane, les pommes et des kiwis pomme-de-terre ...'; // j'aurais 2 resultats (pomme et kiwis)
// a chercher
$fruits = array('pomme', 'fraise', 'kiwi');
$i=0;
$mot='';
foreach($fruits as $k){
if(preg_match_all('#'.$k.'(s|[a-z-]+)#i', $contenu,$smatch)){
foreach($smatch[0] as $value){
if(isset($value) and !empty($value)){$i++;$mot.=$k." ==> ".$value."<br />";}
}
}
}
if($i>=1){
$mot=substr($mot,0,-2);
echo $i." resultats trouves:<br /><br />".$mot;
}
else{
echo'Aucun mot trouve';
}
?>
Re: preg_match: Rechercher dans un tableau
Posté : 06 juin 2013, 02:23
par rimie
merci ghost5922 je vais l'essayer
Re: preg_match: Rechercher dans un tableau
Posté : 06 juin 2013, 02:33
par rimie
c'est quoi la difference entre preg_match et preg_match_all?
qu'est ce que ca veut dire cette regex: s|[a-z-]
merci
Re: preg_match: Rechercher dans un tableau
Posté : 06 juin 2013, 07:41
par ghost5922
all va rechercher plusieurs resulat
s|[a-z-] veux dire qui peux il avoir dernier un S ou suivie d'autre lettre et tirer
apres pour plus d'infos regarde sur google il a beaucoup de tuto qui explique "php regex"
Re: preg_match: Rechercher dans un tableau
Posté : 07 juin 2013, 04:23
par rimie
merci ghost5922