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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    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 éprouvé 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
    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 éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    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 éprouvé 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
    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 éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    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 éprouvé 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
    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

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