Preg_match d'une partie d'une expression
Bonjour à tous,
J'ai un nouveau problème que je vais essayer de traiter en Regex :)
J'ai un $texte :
"J'aime les belles roses de manhattan surtout quand je suis dehors pour les admirées."
J'ai une $expression :
"roses de new york manhattan"
Ce que je veux : Utiliser un preg_match($expression,$texte) en admettant une marge d'erreur. Si au moins trois mots de mon expression sont dans le texte et consécutifs, je veux qu'il renvoie TRUE.
A vos claviers :)
D'avance, merci aux experts.
Pour ceux que ca intéresse
Je crois que ca marche pas trop mal,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| $texte="le rouge et le bateau de france.";
$expression=array('le','petit','bateau','de','france','tout','rouge','et');
foreach($expression as $word)
{
if (strlen($word)<=3)//Si le mot est un mot de liaison (moins de trois lettes)
{
$tab_inf[]=$word;//On le place dans le tableau des mots de liaisons.
}
else
{
$tab_sup[]=$word;//Sinon on le met dans le tableau des mots clés.
}
}
$reg_inf=implode('|',$tab_inf);//On cnstruit le tableau avec des | qui veut dire "ou" pour les deux tableaux.
$reg_sup=implode('|',$tab_sup);
if (preg_match("/(([ ]|\.|$reg_inf){0,5}($reg_sup)([ ]|\.|$reg_inf){0,5}){3,10}/",$texte))
{
echo "yes";
}
else
{
echo "merde";
} |
Content de moi ;)