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 :

transformer un texte


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Par défaut transformer un texte
    Bonjour, je cherche un moyen de transformer automatiquement ce texte contenant :

    mon texte1 ##7#1#choix 0#choix 1#choix2## encore du texte ##24#0#choix 0#choix 1#choix2# choix 3#choix 4##
    ...(ainsi de suite: mélange de texte et de ce code spécial)...

    par ce texte html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon texte1 <select name="id7"><option>choix 0</option><option selected>choix 1</option><option>choix 2</option></select> encore du texte <select name="id24"><option selected>choix 0</option><option>choix 1</option><option>choix 2</option><option>choix 3</option><option>choix 4</option></select>...(ainsi de suite)...
    En d'autre terme il faut chercher dans le texte et transformer toutes les occurrences ##id#indice selected#liste des choix## par du code html
    La forme ##id#indice selected#liste des choix## peut être changée pour plus desouplesse de programmation si besoin

    Si vous avez un lien ou une suggestion je vous remercie d'avance.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 714
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 714
    Par défaut
    Une 1re étape serait de chercher les éléments à remplacer comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $texte = "mon texte1 ##7#1#choix 0#choix 1#choix2## encore du texte ##24#0#choix 0#choix 1#choix2# choix 3#choix 4## suite du texte";
     
    preg_match_all("!##(.*)##!U", $texte, $resultats, PREG_SET_ORDER);
     
    foreach ($resultats as $indice => $r) {
     
        // génération du code de remplacement
        $remplacement = "<strong>élément $indice</strong>";
     
        $texte = str_replace($r[0], $remplacement, $texte);
     
    }
     
    echo $texte;
    ensuite pour la génération du code, vous pouvez utiliser la fonction http://php.net/explode

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 010
    Par défaut
    En reprenant l'idée de mathieu qui consiste à décrire une section de "code spécial" entière puis à utiliser explode pour séparer les différents choix, mais en utilisant preg_replace_callback pour procéder au remplacement directement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $result = preg_replace_callback('~##(?<id>\d+)#(?<selected>\d+)#(?<choices>.+?)##~s',
        function ($m) {
            $replacement = '<select name="id' . $m['id'] . '">';
            foreach (explode('#', $m['choices']) as $k => $choice) {
                $replacement .= ( $k == $m['selected'] ? '<option selected>' : '<option>' )
                             . trim($choice) . '</option>';
            }
            return $replacement . '</select>';
        }, $str);

Discussions similaires

  1. transformer champ texte d'une table vers champ date
    Par mussara dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/01/2007, 23h17
  2. [HTML-Kit] Transformer un texte à accents
    Par calogerogigante dans le forum Outils
    Réponses: 13
    Dernier message: 18/06/2006, 16h08
  3. Réponses: 5
    Dernier message: 19/05/2006, 15h29
  4. Transformer du texte en date
    Par banker dans le forum Access
    Réponses: 3
    Dernier message: 20/01/2006, 09h41
  5. Excel:probleme pour transformer du texte en nombre par macro
    Par pcheval dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/11/2005, 23h18

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