Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 13-04-2008 04:29:48

byld
Membre
Date d'inscription: 26-07-2005
Messages: 56

chercher un mot dans une chaine de caractères

Bonjour et pardon pour mon ignorance!

Comment faire pour trouver un mot  qui est dans la variable $row[0] dans une chaine de caractères qui est et $ titre et $texte?
Je cherche par exemple 'France'  mais je veux aussi trouver ' france, français, francilien, française, françaises, etc'

Une idée?

Merci d'avance! wink

Hors ligne

 

#2 13-04-2008 04:50:30

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 159
Site web

Re: chercher un mot dans une chaine de caractères

Salut,

tu peut faire avec strpos()

Code:

$string = 'francais';
$search = 'franc';
$result = strpos($search, $string);
if($result != False){
echo 'la chaine est presente en position'. $result;
}
else{
echo 'la chaine n'est pas presente';
}

Ou alors si tu veut vraiment faire par correspondances il faut creer un dictionnaire avec un array par exemple.

Dernière modification par Asherah (13-04-2008 04:54:42)

Hors ligne

 

#3 13-04-2008 05:22:11

byld
Membre
Date d'inscription: 26-07-2005
Messages: 56

Re: chercher un mot dans une chaine de caractères

Merci à toi! "Il semble que tu m'ai pris en main ! wink "
Mais cela ne fonctionne pas...Je suis toujours dans un contexte spip. Voilà mon code:

Code:

$query="SELECT  spip_mots.titre, spip_rubriques.id_rubrique
FROM spip_rubriques LEFT JOIN spip_mots ON spip_mots.titre = spip_rubriques.titre";
$result3 = spip_query (${query}) ;
  while($row = mysql_fetch_row($result3))
              {  $titre1=$row[0]; echo $titre1;
  $string = $titre;
$search = $titre1;
$result = strpos($search, $string);
if($result != False){
echo 'la chaine est presente en position'. $result;
}
else{
echo 'la chaine n est pas presente';
}}

et voilà ce que ça me retourne:

Autres Paysla chaine n est pas presente Soudanla chaine n est pas presente Tchad la chaine n est pas presenteDocumentations Spécifiques Tchadla chaine n est pas presenteSomaliela chaine n est pas presenteTextes de la Francophoniela chaine n est pas presenteEgyptela chaine n est pas presenteAfriquela chaine n est pas presenteReste du Mondela chaine n est pas presenteChinela chaine n est pas presenteCommuniqué de presse : Un incendie se propage dans un camp de réfugiés à l'est du Tchad, laissant 3 000 personnes sans-abri - 474
Un incendie s'est propagé vendredi dans une partie du camp reculé de Goz Amer, situé dans l'est du Tchad, laissant sans abri quelque 3 000 réfugiés

Hors ligne

 

#4 13-04-2008 05:38:17

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 159
Site web

Re: chercher un mot dans une chaine de caractères

C'est la premiere fois que je vois ça, c'est un peu exotique...

Code:

$result3 = spip_query (${query});

t'es sur que ca marche?

sinon essaye comme ca:

Code:

$result3 = spip_query($query) ;

Hors ligne

 

#5 13-04-2008 05:56:30

byld
Membre
Date d'inscription: 26-07-2005
Messages: 56

Re: chercher un mot dans une chaine de caractères

Oui ce sont les bizarreries de spip. Mais ça marche dans les deux cas . Par contre le test sur la chaine ne fonctionne  toujours pas. C'est extrêmement curieux !

Hors ligne

 

#6 13-04-2008 06:03:13

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 159
Site web

Re: chercher un mot dans une chaine de caractères

Sinon row[0] doit te renvoyer le numero de la colonne et non pas un string ca serait plutot row[1] qui te renvoi la valeur, a ta place je ferait un fetch_assoc,

Donc si c'est le cas c'est normal qui ne trouve pas la chaine.

Hors ligne

 

#7 13-04-2008 08:04:32

byld
Membre
Date d'inscription: 26-07-2005
Messages: 56

Re: chercher un mot dans une chaine de caractères

Asherah a écrit:

Sinon row[0] doit te renvoyer le numero de la colonne et non pas un string ca serait plutot row[1] qui te renvoi la valeur, a ta place je ferait un fetch_assoc,

Donc si c'est le cas c'est normal qui ne trouve pas la chaine.

Non, car comme tu le vois dans le code ci-dessus, $row[0] est égal à $titre1. Hors je fais un echo  $titre1 et cela me retourne bien le titre du mot clé ( cf: la jointure de tables)

Hors ligne

 

#8 13-04-2008 11:45:21

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 159
Site web

Re: chercher un mot dans une chaine de caractères

bon enleve false et met

if($result != False){

et met

if(isset($result)){

Et si ca ne vient pas de là, je sait pas.

Hors ligne

 

#9 14-04-2008 02:32:34

byld
Membre
Date d'inscription: 26-07-2005
Messages: 56

Re: chercher un mot dans une chaine de caractères

Et non, désolé, ça ne fonctionne toujours pas..sad

Hors ligne

 

#10 14-04-2008 03:08:10

lolo3129
Membre
Lieu: Paris
Date d'inscription: 10-05-2005
Messages: 428
Site web

Re: chercher un mot dans une chaine de caractères

cf http://fr3.php.net/manual/fr/function.strpos.php et lire l'avertissement...

il faut utiliser

Code:

if ($result === false)

Hors ligne

 

#11 14-04-2008 04:17:52

byld
Membre
Date d'inscription: 26-07-2005
Messages: 56

Re: chercher un mot dans une chaine de caractères

Je suis arrivé à un semblant de quelque chose ainsi:

Code:

$titre1=$row[0]; 
$string = $titre;
 $string1=$texte;
if ((eregi($titre1, $string)) OR (eregi($titre1, $string1))) {
    echo "<p style='color:green'>'$string' contient '$titre1'!</p>"; echo "<p style='color:green'>'$string1' contient '$titre1'!</p>";
}

Par contre s'il trouve bien Suisse ou suisse; il ne me trouve pas Suissesse ! Grrrr!!!

Hors ligne

 

#12 14-04-2008 12:16:33

byld
Membre
Date d'inscription: 26-07-2005
Messages: 56

Re: chercher un mot dans une chaine de caractères

Bon ça marche avec preg_match et /i

Merci à tous wink

Hors ligne