IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Deux mots dans deux tableaux [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut Deux mots dans deux tableaux
    Bonjour, le titre n'est pas explicite désolé mais vous allez comprendre pourquoi

    Voila ce que je cherche à faire en prenant un exemple. (Le but étant de créer des liens automatiques dans des sujets de discussion.)

    En gros, lorsque dans mon texte, j'ai [nom-plante] + (2 ou 3 mots entre) + [nom-ville], je dois créé un lien.

    Mes difficultés sont :

    • [nom-plante] et [nom-ville] appartiennent à deux tableaux
    • Il peut y avoir deux ou trois mots entre [nom-plante] et [nom-ville]


    Par exemple, si j'ai : "J'adore les roses de la belgique",
    je vais créer un lien donc ca donnera :
    "J'adore les <a>roses de la belgique</a>"

    Voila le problème, pour le moment j'ai mes deux tableaux ed plante et de villes mais apres je ne sais pas trop comment m'y prendre avec les expressions régulières (car je crois que c'est peut etre le plus pratique).

    Je comptais utiliser un preg_match mais :

    • Je ne sais pas si le "pattern" peut être un tableau
    • Je ne sais pas comment associer deux mots dans le pattern
    • Je ne sais pas comment faire pour laisser deux mots entre


    Par avance, merci beaucoup aux experts qui tenteront de résoudre ce problème !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    je ne suis pas sur d'avoir tout saisi mais je tente ma chance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    header('Content-Type: text/html; charset=utf-8');
    $tabfleur=array('roses','lilas','tulipe');
    $tabville=array('belgique','madagascar','hollande');
    $chaine="j'adore les roses de la belgique et le lilas que l'on trouve à madagascar, mais je suis allergique aux tulipes noires de hollande";
    echo $chaine."<br/>";
    $i=0;
    for($i=0;$i<3;$i++){
    	$reg="#(".$tabfleur[$i].".*".$tabville[$i].")#xsui";
    	echo $reg."<br/>";
    	$chaine=preg_replace($reg,'<a href="#">$1</a>',$chaine);
     
    }
     
    echo htmlentities($chaine)."<br/>";
    echo $chaine."<br/>";
    ?>
    à noter que je travaille en utf8 intégral d'ou le u et le header que tu pourras virer si tu n'est pas en utf8
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut Merci beaucoup
    Un grand merci à toi SpaceFrog, je test ce matin ta requête qui me semble très propre

    Désolé de répondre assez tardivement, j'étais sur quelque chose d'autre du coup

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut Pour SpaceFrog
    Rebonjour SpaceFrog,

    J'ai testé ton code, c'est assez proche de ce que je veux faire, c'est super !

    Peux tu m'aider à la modifier un peu pour :

    • Autoriser un maximum de trois mots entre $tabfleur et $tabville. Je pens faire quelquechose de la sorte (\s){0,3} mais pas très concluant.
    • Ne pas tenir compte de la position des mots dans le tableau. Pour reprendre ton exemple, il faudrait que "roses de madagascar" soit remplacé.


    Merci d'avance

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    header('Content-Type: text/html; charset=utf-8');
    $tabfleur=array('roses','lilas','tulipe');
    $tabville=array('belgique','madagascar','hollande');
    $chaine="j'adore les roses de la belgique et le lilas vert trouvés à madagascar, <br/>mais je suis allergique aux tulipes de toutes les couleurs de hollande<br/> les roses de madagascar sont belles.";
    echo $chaine."<br/>";
    $villes=implode($tabville,'|');
    $fleurs=implode($tabfleur,'|');
    $reg="#((".$fleurs.")(\W[^ ]+\W?){1,3}(".$villes."))#xsui";
    echo $reg."<br/>"; 
    $chaine=preg_replace($reg,'<a href="#">$1</a>',$chaine);
    echo "<br/>"; 
    echo htmlentities($chaine)."<br/>";
    echo "<br/>"; 
    echo $chaine."<br/>";
    ?>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut Génial
    Ca fais plaisir d'être débloqué.

    Je reviendrai souvent ici

    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Défilement de mots dans deux texbox
    Par baryum dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/02/2015, 16h00
  2. [CakePHP] Comment faire une recherche avec deux mots dans une table
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/02/2014, 00h20
  3. utiliser deux mots dans un form1
    Par hacker59 dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/12/2013, 18h03
  4. Déterminer le nombre de mots dans deux fichiers de texte
    Par daniel1985 dans le forum Général Java
    Réponses: 1
    Dernier message: 14/12/2012, 12h51
  5. [batch] Comment rechercher deux mots dans un fichier .txt ?
    Par koKoTis dans le forum FAQs Windows
    Réponses: 0
    Dernier message: 10/02/2009, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo