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 :

[PHP-JS] Trouver une chaine de caractères


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut [PHP-JS] Trouver une chaine de caractères
    Bonjour,

    Je cherche a faire une fonction qui cherche une position top et left d'un objet pour pouvoir y enlever respectivement 110 et 120 px.

    En gros Ma chaine de caractère en entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine="<DIV id=boxHandle1 style="LEFT: 161px; WIDTH: 250px; POSITION: absolute; TOP: 140px; HEIGHT: 123px; BACKGROUND-COLOR: #66cc66"></DIV>";
    Et je veux que ma chaine en sortie soit comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine="<DIV id=boxHandle1 style="LEFT: 41px; WIDTH: 250px; POSITION: absolute; TOP: 30px; HEIGHT: 123px; BACKGROUND-COLOR: #66cc66"></DIV>";
    Comment faire?

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    as-tu vraiment besoin de le faire coté serveur?
    Sinon tu peux le faire assez facilement en javascript

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    Oui malheuresement je suis obligé de le faire côté serveur, ce qui je l'avoue ne m'arrange pas!!

  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    bon j'ai une proposition. Un peu lourd peut être?!!
    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
    <?php
    $chaine = '<DIV id=boxHandle1 style="LEFT: 161px; WIDTH: 250px; POSITION: absolute; TOP: 140px; HEIGHT: 123px; BACKGROUND-COLOR: #66cc66"></DIV>';
    $tab = explode(';',$chaine);
    print_r($tab);
     
    $left = explode(' ',$tab[0]);
    $leftPx = substr($left[3],0,3);
    $left[3] = ($leftPx - 120).'px';
    $tab[0] = implode(' ',$left);
     
     
    $top = explode(' ',$tab[3]);
    $topPx = substr($top[2],0,3);
    $top[2] = ($topPx - 110).'px';
    $tab[3] = implode(' ',$top);
     
    echo implode(';',$tab);
    ?>

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    C'est bien, mais il se peut qu'il y ait plusieurs div à la suite...
    C'est là ou est la difficulté...
    Peut être en cherchant la chaine left:...px; ?

  6. #6
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    en expression régulière.... on peut effectivement arriver à un truc plus élégant, mais le code ci-dessous ne fonctionne qu'à moitié !
    le replace se fait de manière litérale, la soustraction ne se fait pas...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $chaine = 'DIV id=boxHandle1 style="LEFT: 161px; WIDTH: 250px; POSITION: absolute; TOP: 140px; HEIGHT: 123px; BACKGROUND-COLOR: #66cc66"></DIV>';
     
    $pattern[0] = '/(?<=LEFT\:)(.*)\d(?=px; WIDTH)/';
    $pattern[1] = '/(?<=TOP\:)(.*)\d(?=px; HEIGHT)/';
    $replace[0] = '$0-120';
    $replace[1] = '$0-110';
    echo preg_replace($pattern,$replace,$chaine);
     
     
    ?>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //affiche
    DIV id=boxHandle1 style="LEFT: 161-120px; WIDTH: 250px; POSITION: absolute; TOP: 140-110px; HEIGHT: 123px; BACKGROUND-COLOR: #66cc66">

    à voir si un guru des expressions régulière saurait nous donner un petit coup de pouce

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Ce serait possible avec les expressions régulières mais ici je ne suis pas certain que c'est ce qu'il y a de plus fiable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $chaine = 'DIV id=boxHandle1 style="LEFT: 161px; WIDTH: 250px; POSITION: absolute; TOP: 140px; HEIGHT: 123px; BACKGROUND-COLOR: #66cc66"></DIV>';
     
    $pattern = array(
        '/(?<=\bLEFT:)\s*(\d+)\s*(?=px;)/ei',
        '/(?<=\bTOP:)\s*(\d+)\s*(?=px;)/ei'
    );
    $replace = array(
        '\1 - 120',
        '\1 - 110'
    );
    echo preg_replace($pattern, $replace, $chaine);

Discussions similaires

  1. trouver une chaine de caractères dans une page web
    Par ludojojo dans le forum C++Builder
    Réponses: 10
    Dernier message: 11/06/2008, 20h01
  2. Comment trouver une chaine de caractère dans fichier texte
    Par youssef1989 dans le forum Débuter
    Réponses: 3
    Dernier message: 01/05/2008, 16h45
  3. comment trouver une chaine de caractère
    Par samplaid dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 11/03/2008, 14h18
  4. Réponses: 5
    Dernier message: 16/05/2007, 13h43
  5. Réponses: 4
    Dernier message: 03/01/2007, 10h39

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