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 :

Corriger du code css à la volée


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut Corriger du code css à la volée
    Bonjour

    je recherche une solution pour corriger du code css via une api ou un webservice

    en effet j'ai des templates qui sont traitées avec un système de dynamic content
    qui gère des tags délimité par {}
    du coup si j'ai du css dans le code, les {} sont retirés par le système de dynamic content et le css n'est plus valide

    (je n'ai pas accès aux sources qui gère le dynamic content)

    Merci
    Bonne journée

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Peux tu donner un exemple ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Eventuellement comme ça.

    Code php : 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
    18
     
    <?php
    $pattern = "/(<\s*style\s+type\s*=\s*\"text\/css\"\s*>.*?<\/\s*style\s*>)/msi";
    // Chargement du fichier
    $html = file_get_contents('test9255b.php');
    preg_match_all($pattern,$html,$array);
    $replacement = array();
    foreach($array[0] as $key => $value) {
     // chaine peu proobable -> on peut mettre ce qu'on veut
     $replacement[$key] = "<!--h____________h_________i$key-->";
    }
    // on remplace par une chaine peu probable
    $html = str_replace($array[0],$replacement,$html);
    // ----> on fait ce qu'on veut sur le code
    //print $html; // $html contient les données remplacées
    // on fait le remplacement inverse
    $html = str_replace($replacement,$array[0],$html);
    print $html;

    test9255b.php
    Code html : 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
    18
    19
    20
     
    <!DOCTYPE html>
    <html>
            <head>
      <style type="text/css">
      h3 {color:red}
      h4 {color:blue}
      </style>
     
      <style type="text/css">
      div {color:green}
      p {color:yellow}
      </style>
     
            </head>
     
            <body>
                <h2>Calcul</h2>
            </body>
    </html>

    Source test9255b.php

    Nom : 20170516_003A.JPG
Affichages : 159
Taille : 25,8 Ko

    Après le remplacement
    Nom : 20170516_003B.JPG
Affichages : 152
Taille : 17,7 Ko

    Après la remise à l'état initial
    Nom : 20170516_003C.JPG
Affichages : 171
Taille : 24,9 Ko
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    Bonjour,

    Merci pour votre réponse
    je vous donne un exemple de code css invalide (car il manque les {}) qu'il faut retoucher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <style>
    @media only screen and (max-width : 600px) 
    table, tr, tbody, td
    display : block;
    width:100% !important;
    .col
    padding:10px 0 0 !important;
    .col2
    padding:0 0 10px !important;
    .col3
    padding:0 !important;
    .boutons
    width:90% !important;
    </style>

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Salut.

    A la vue de ce que tu as posté, il suffit que tu fasses un str_replace("<style>","<style> {",$chaine); et un autre avec str_replace("</style>","} </style>",$chaine);
    $chaine contient le code html.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    pas tout à fait
    il faudrait après traitement obtenir :
    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
    18
    19
    20
    <style>
    @media only screen and (max-width : 600px) {
    table, tr, tbody, td{
    display : block;
    width:100% !important;
    }
    .col{
    padding:10px 0 0 !important;
    }
    .col2{
    padding:0 0 10px !important;
    }
    .col3{
    padding:0 !important;
    }
    .boutons{
    width:90% !important;
    }
    }
    </style>
    c'est à dire remettre les { et } pour tous les styles
    car sans elles le style n'est pas interprété

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Oopppss. Je n'étais pas bien réveillé.
    Essaie le code que j'ai posté.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    J'ai oublié de préciser que mon code reconnait la balise <style type="text/css">
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  9. #9
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Version qui gère aussi le <style>

    Code php : 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
    18
    19
    20
    21
     
    <?php
    //$pattern = "/(<\s*style\s+type\s*=\s*\"text\/css\"\s*>.*?<\/\s*style\s*>)/msi";
    $pattern = "/(<\s*style(\s+type\s*=\s*\"text\/css\"){0,1}\s*>.*?<\/\s*style\s*>)/msi";
    // Chargement du fichier
    $html = file_get_contents('test9255b.php');
    preg_match_all($pattern,$html,$array);
    $replacement = array();
    foreach($array[0] as $key => $value) {
     // chaine peu proobable -> on peut mettre ce qu'on veut
     $replacement[$key] = "<!--h____________h_________i$key-->";
    }
    // on remplace par une chaine peu probable
    $html = str_replace($array[0],$replacement,$html);
    file_put_contents('toto_01.txt',$html); // mis seulement pour avoir une trace du changement
    // ----> on fait ce qu'on veut sur le code
     
    // on fait le remplacement inverse
    $html = str_replace($replacement,$array[0],$html);
    file_put_contents('toto_02.txt',$html); // mis seulement pour avoir une trace du changement
    print $html;

    test9255b.php :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <!DOCTYPE html>
    <html>
            <head>
      <style type="text/css">
      h3 {color:red}
      h4 {color:blue}
      </style>
     
      <style type="text/css">
      div {color:green}
      p {color:yellow}
      </style>
     
      <style>
      @media only screen and (max-width : 600px) {
       table, tr, tbody, td{
       display : block;
       width:100% !important;
       }
       .col{
       padding:10px 0 0 !important;
       }
       .col2{
       padding:0 0 10px !important;
       }
       .col3{
       padding:0 !important;
       }
       .boutons{
       width:90% !important;
       }
      }
      </style>
     
            </head>
     
            <body>
                <h2>Calcul</h2>
            </body>
    </html>
    toto_01.txt :
    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
     
    <!DOCTYPE html>
    <html>
            <head>
      <!--h____________h_________i0-->
     
      <!--h____________h_________i1-->
     
      <!--h____________h_________i2-->
     
            </head>
     
            <body>
                <h2>Calcul</h2>
            </body>
    </html>
    toto_02.txt :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <!DOCTYPE html>
    <html>
            <head>
      <style type="text/css">
      h3 {color:red}
      h4 {color:blue}
      </style>
     
      <style type="text/css">
      div {color:green}
      p {color:yellow}
      </style>
     
      <style>
      @media only screen and (max-width : 600px) {
       table, tr, tbody, td{
       display : block;
       width:100% !important;
       }
       .col{
       padding:10px 0 0 !important;
       }
       .col2{
       padding:0 0 10px !important;
       }
       .col3{
       padding:0 !important;
       }
       .boutons{
       width:90% !important;
       }
      }
      </style>
     
            </head>
     
            <body>
                <h2>Calcul</h2>
            </body>
    </html>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

Discussions similaires

  1. [Dreamwaver] Mise en page/forme du Code css html,js,php..
    Par acceso dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 04/03/2006, 18h05
  2. difficulté à appliquer les classes avec un code css
    Par pharaonline dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 24/02/2006, 15h52
  3. Code CSS propre
    Par keawee dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/10/2005, 21h59
  4. coller de div avec un code css identique.
    Par samourai_alex dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 29/07/2005, 20h16
  5. [JpGraph] code barre à la volée?
    Par toan dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 11/10/2004, 09h15

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