Utilisation d'une EREG

cs_mrfox Messages postés 89 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 5 décembre 2009 - 28 mars 2007 à 09:06
cs_mrfox Messages postés 89 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 5 décembre 2009 - 30 mars 2007 à 14:13
Bonjour,

je souhaiteriuas obtenir de votre part un coup de pousse, car n'etant pas très a l'aise avec les expreg.

Je suis occuper de faire une reconnaissance de carractere dans un texte, mais je suis confronté a un probleme

Je souhaiterias faire reconnaitre, par exemple, les mots : BASS et BASSDRUM qui sont dans une base, mais si mon texte comporte BASSDRUM celui-ci ne reconnait que BASS idem pour TABASSER,

j'ai donc pensé au ereg pour reconnaitre que le mot exact ne comporte pas de caracterne alphanumerique avant ou apres

mais comment ecrire cette expression ?
Merci

--------- VOICI MON CODE ACTUEL ---------
function detection_dj($texte)
{
$mysql = new mysql;
$mysql->connect('');
$mysql->requete('SELECT * FROM `guestdj` WHERE active="1"',1);
while($r1 = $mysql->fetch_row(1))
{
$texte = eregi_replace($r1['nom'],"[dj_".$r1[ ".$r1['nom']."]",$texte);
}

$mysql->requete('SELECT * FROM `dj`',2);
while($r2 = $mysql->fetch_row(2))
{
$texte = eregi_replace($r2['nom'],"[residents.html#".$r2[ ".$r2['nom']."]",$texte);
}

echo $texte;
}


___________________________
DJ FOX
http://www.eternalbliss.net

7 réponses

DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
28 mars 2007 à 21:54
Hello,

sous réserve qu'il existe une fonction et que j'ai bien compris ton probleme, voici un exemple de masque de filtrage:

<?php
$string = 'Eléments matchés: BASSISTES,BASSDRUMABCD,TABASSER. Eléments rejetés: TABaSser,bAsS,ect...'; // texte issu du fetch MySQL
$pattern = '#\b[a-z]*(?:(?-i)BASS|BASSDRUM)[a-z]*\b#i'; // masque de filtrage - sensible à la case(BASS,BASSDRUM)
preg_match_all($pattern,$string,$matches,PREG_SET_ORDER); // ordonné selon l'ordre des correspondances
echo '',print_r($matches),'

'; // affichage du résultat
?>
0
cs_mrfox Messages postés 89 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 5 décembre 2009
28 mars 2007 à 22:49
Oulla
merci du coup de pouce mais comment l'adapter de manier autamtique comme le STR_REPLACE ? car avec BASS ce n'etait qu'unn exemple

Ps : je n'ai pas besoin que ce soit sensible a la casse :)

mrci


___________________________
DJ FOX
http://www.eternalbliss.net
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
29 mars 2007 à 18:39
Me revoilà,

alors je ne sais pas si c'est vraiment ce que tu veux mais voici une seconde ebauche:


// reconnaissance d'un mot à partir d'une sous-chaine
$string = 'abcd BASSISTES BASSDRUMABCD TABASSER abcd abcd TABaSser bAsS';
$pattern = '#([a-z]*(?:bass|bassdrum)[a-z]*)#i';
$result = preg_replace($pattern,'\\1',$string,-1,$count);
echo "Avant => $string
\n";
echo "Aprés => $result
\n";
echo "Remplacements effectues: $count";
0
cs_mrfox Messages postés 89 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 5 décembre 2009
29 mars 2007 à 18:42
OK merci
je pense qu'avec ca j'ai suffisement de grain a moudre pour finaliser
merci encore de ton aide

___________________________
DJ FOX
http://www.eternalbliss.net
0

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

Posez votre question
cs_mrfox Messages postés 89 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 5 décembre 2009
29 mars 2007 à 23:02
je vien de tester et je me rend compte que malgres les mot BASS et BASSDRUM, cela souligne tout les mots qui contienne BASS et pas exclusivement BASS :(


jai vraiment du mal avec les EREG :(


___________________________
DJ FOX
http://www.eternalbliss.net
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
30 mars 2007 à 12:03
décidément... .




<?php
$string = 'abcd BASSISTES BASSDRUMABCD TABASSER abcd abcd TABaSser bAsS';
$pattern = '#(bass|bassdrum)#i';
$result = preg_replace($pattern,'\\1',$string,-1,$count);
echo "Avant => $string
\n";
echo "Aprés => $result
\n";
echo "Remplacements effectues: $count";
?>
0
cs_mrfox Messages postés 89 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 5 décembre 2009
30 mars 2007 à 14:13
Apparement, il persite un probleme car si je demande de ne souligner que BASS il souligne le BASS de BASSDRUM et tous ceux qui contiennent BASS, alors qu'il devrait souligner eclusivement le mot BASS seul, comprend tu ?


___________________________
DJ FOX
http://www.eternalbliss.net
0
Rejoignez-nous