la fonction strpos();

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par hanlin, 19 Octobre 2009.

  1. hanlin
    hanlin WRInaute occasionnel
    Inscrit:
    23 Mars 2006
    Messages:
    263
    J'aime reçus:
    0
    Bonjour,
    J'essaye d'attribuer un identifiant à la volée pour un xcertains nombre d'articles que je désire répertorier sur mon site.
    En gros j'ai un array listant les termes avec l'identifiant correspondant :
    Code:
    $companies=array('entrep' => '4','entrep2' => '5','entrep3' => '6','entrep4' => '7','entrep5' => '8',) ;
    et une fonction qui me permet de mettre directement un identifiant (ici $section) sur un titre extrait de ma base :
    Code:
    while ($title=mysql_fetch_array($sql)) 
    
    { 
    
    $mytitle= $title['title'];
    $i=0;
    foreach($companies as $nom=>$section)
        {
       
    $pos= strpos($mytitle,$nom);
    if($pos === false) 
       {
    
    	}
    
    else {
    $i++;
    
    echo $section ;
    
    if ($i==1)
    exit;
    
    } // end of else 
       
       
       
       
        } //end foreach
    	
    	
    
    } //end of while
    Je voudrais savoir comment faire pour que ma fonction strpos () puisse repérer aussi bien les termes Entr1 que entr1 ou ENTR1, ne pas tenir compte de la casse en repérant le terme exact.
    J'ai essayé de tout mettre en minuscule mais des fois dans mon titre j'ai des mots comme "entreprise" où il y a les lettres "entr" mais qui ne correspondent pas au nom propre d'une entreprise.
    J'espère que je ne suis pas trop confu dans mes explications
    Merci !
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Alors tu vas sur la page de la doc de strpos http://php.net/manual/en/function.strpos.php et tu regardes dans la section "see also", et tu découvres stripos. Pfiou, c'était dur. Evidemment tu aurais aussi pu faire un strpos(strtolower($mytitle),$nom).

    Sinon tu as la possibilité d'utiliser preg_match, qui te permet par exemple d'utiliser \b pour chercher "des mots entiers"...

    Jacques.
     
  3. hanlin
    hanlin WRInaute occasionnel
    Inscrit:
    23 Mars 2006
    Messages:
    263
    J'aime reçus:
    0
    Merci pour ta réponse, je vais tester preg_match qui m'a l'air plus appropriée, car des fois mes noms sont composés de deux mots, j'ai cru comprendre que strpos(); eteait utilisée pour un seul mot...
     
  4. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Strpos recherche très "bêtement" la chaîne exacte que tu lui demandes de chercher. Donc si tu lui dis de chercher "te", il le trouvera dans "je te vois", dans "je termine", dans "ça en jette" ou encore dans "utilisateur".

    Avec preg_match, tu peux lui dire de chercher "\bte\b", auquel cas il te trouvera que le premier "te" dans les exemples ci-dessus (et par rapport à un strpos qui rechercherait " te " avec des espaces avant et après, ça a l'avantage que ça marcherait aussi si "te" est le premier ou dernier mot, ou suivi ou précédé d'un symbole de ponctuation par exemple).

    Tu peux aussi dans certains cas faire des expressions régulières plus complexes. Par exemple si tu cherches "Bison futé", mais que tu ne sais pas si les gens ne vont pas écrire ça "Bison-futé" ou "Bisonfuté", tu peux chercher "\bBison\W*futé\b" (\W est n'importe quel caractère qui n'est pas une lettre, et * signifie 0 ou plusieurs fois). Et évidemment en mettant les bonnes options tu peux gérer les minuscules/majuscules.

    Si tu veux gérer les accents, dans le cas présent tu pourrais chercher "\bBison\W*fut[eé]\b". Je ne sais pas si en PHP on peut s'amuser avec les formes Unicode décomposées et les modificateurs (en perl on ferait un NFD sur la chaîne pour décomposer les caractères accentués en accents + caractère non accentué, puis on utiliserait \pM pour virer les accents).

    [... oqp vérifier ...]

    Ah ben alors c'est normalizer_normalize($string, Normalizer::FORM_D), on en apprend tous les jours :)

    Jacques.
     
  5. hanlin
    hanlin WRInaute occasionnel
    Inscrit:
    23 Mars 2006
    Messages:
    263
    J'aime reçus:
    0
    Encore Merci pour ce tuto très instructif !
    Cela me conforte dans mon choix de la fonction à utiliser...preg_match car mes noms peuvent contenir des Majuscules/minuscule dans la phrase...
    hanlin
     
Chargement...
Similar Threads - fonction strpos() Forum Date
Fonction strpos() Problèmes de référencement spécifiques à vos sites 19 Juillet 2004
Planethoster - redirection http vers https non fonctionnelle URL Rewriting et .htaccess Mercredi à 11:59
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
WordPress Rediriger le visiteur en fonction de la langue du navigateur Référencement international (langues, pays) 12 Août 2022
Une aide pour une fonction récursive... Développement d'un site Web ou d'une appli mobile 18 Juillet 2022
Adresse mail ne fonctionne plus après modif de DNS Noms de domaine et référencement 26 Mai 2022
Méthode qui fonctionne le mieux en référencement SEO Débuter en référencement 19 Avril 2022
Onclick Select ne fonctionne pas dans Chrome Développement d'un site Web ou d'une appli mobile 21 Mars 2022
Des adresses qui ne fonctionnent plus... Développement d'un site Web ou d'une appli mobile 6 Novembre 2021
fonctionnement précis outil suppression url search console Débuter en référencement 18 Octobre 2021
PHP / CURL : interrogation page tiers ne fonctionne plus Développement d'un site Web ou d'une appli mobile 2 Octobre 2021
ma redirection ne fonctionne pas URL Rewriting et .htaccess 18 Août 2021
url rewriting ne fonctionne pas chez moi URL Rewriting et .htaccess 4 Août 2021
mon code ne fonctionne pas pour masquer les .php URL Rewriting et .htaccess 31 Juillet 2021
htaccess qui fonctionne partout sauf sur 1 seul PC URL Rewriting et .htaccess 28 Juillet 2021
La fonction mail (PHP) ne passe pas ! Demandes d'avis et de conseils sur vos sites 28 Juin 2021
Outil "Désavouer des liens" ne fonctionne plus Netlinking, backlinks, liens et redirections 18 Mai 2021
Fonction récursive PHP. Développement d'un site Web ou d'une appli mobile 24 Avril 2021
Annonces thématiques non fonctionnelles AdSense 6 Avril 2021
Récapitulatif Les CMP (Consent Management Platform) : intérêt, fonctionnement... Administration d'un site Web 30 Mars 2021