Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
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. |
||
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! ![]()
Hors ligne
Salut,
tu peut faire avec strpos()
$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
Merci à toi! "Il semble que tu m'ai pris en main !
"
Mais cela ne fonctionne pas...Je suis toujours dans un contexte spip. Voilà mon 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
C'est la premiere fois que je vois ça, c'est un peu exotique...
$result3 = spip_query (${query});t'es sur que ca marche?
sinon essaye comme ca:
$result3 = spip_query($query) ;
Hors ligne
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
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
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
Et non, désolé, ça ne fonctionne toujours pas..![]()
Hors ligne
cf http://fr3.php.net/manual/fr/function.strpos.php et lire l'avertissement...
il faut utiliser
if ($result === false)
Hors ligne
Je suis arrivé à un semblant de quelque chose ainsi:
$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
Bon ça marche avec preg_match et /i
Merci à tous ![]()
Hors ligne