[Résolu][PHP] Problème sur une fonction avec un serveur UNIX

Discussion dans 'Administration d'un site Web' créé par Gaëtan R., 2 Juin 2004.

  1. Gaëtan R.
    Gaëtan R. WRInaute discret
    Inscrit:
    26 Avril 2004
    Messages:
    225
    J'aime reçus:
    0
    Bonjour,

    J'ai un souci avec une fonction PHP. :(

    J'utilise cette fonction dans plusieurs site et jusque là, aucun souci. Mon script PHP fonctionne aussi bien en local (avec Easy-PHP 1.7) que sur un hébergement avec serveur Linux ou IIS.

    Je suis en train de développer un site qui sera sur un hébergement avec serveur Unix.

    J'ai des messages d'erreur pour une bête fonction ereg() :
    alors que tout fonctionne bien en local... :twisted:

    J'ai configuré Dreamweaver pour qu'il me fasse des sauts de ligne Unix dans mes scripts.

    Si quelqu'un a eu des soucis similaires, ça serait bien de m'orienter. :cry:

    Merci d'avance.
     
  2. deweerdt
    deweerdt WRInaute impliqué
    Inscrit:
    12 Août 2003
    Messages:
    701
    J'aime reçus:
    0
    Peux-tu mettre un bout de ton code?
     
  3. Oncle Tom
    Oncle Tom WRInaute impliqué
    Inscrit:
    31 Mars 2003
    Messages:
    714
    J'aime reçus:
    0
    Tu as la même version de PHP en local et en distant ?
    Balance ton expression régulière, je sais que j'avais eu le même problème avant. Windows et Unix/linux ne réagissent pas pareil pour certaines choses.
     
  4. Gaëtan R.
    Gaëtan R. WRInaute discret
    Inscrit:
    26 Avril 2004
    Messages:
    225
    J'aime reçus:
    0
    Oui, c'est exactement la même version en local qu'en distant, à savoir la 4.3.3.

    C'est bizarre que ça puisse venir de la fonction puisque cela fonctionne très bien sur d'autres serveurs.

    Voila la ligne incriminée :
     
  5. Gaëtan R.
    Gaëtan R. WRInaute discret
    Inscrit:
    26 Avril 2004
    Messages:
    225
    J'aime reçus:
    0
    Personne qui pourrait m'aider ? :?

    L'adresse du site en cours de développement : ht-tp://www.toopy.com/sigmacom

    Les balise genre {references} ou {menu} sont remplacées par le contenu approprié de la base de données MySql.
     
  6. Oncle Tom
    Oncle Tom WRInaute impliqué
    Inscrit:
    31 Mars 2003
    Messages:
    714
    J'aime reçus:
    0
    (je surveille les réponse de ce sujet donc j'oublierai pas de répondre ce coup ci ;))

    Que cherches tu à faire avec cette expression régulière au passage ?

    Normalement, dans le 2° paramètre de la fonction, si tu veux récupérer le contenu de la parenthèse de capture, il faut utiliser \\n ou $n (n étant le numéro du masque de capture, n commençant à 1).
    J'aurais déjà vu ça :

    Code:
     while(ereg("{([^ ]+)}","$1",$tag)){ 
    
    (si $1 marche pas en local, essaie "\\1" )
     
  7. Gaëtan R.
    Gaëtan R. WRInaute discret
    Inscrit:
    26 Avril 2004
    Messages:
    225
    J'aime reçus:
    0
    Je pense avoir saisi d'où pouvait venir mon problème, d'après http://didou.keliglia.com/php/phpman/in ... =ref.regex à propos des expressions régulières de type POSIX.
    Donc, j'ai changé mon code en utilisant une expression régulière compatible Perl : preg_match().

    Pour rappel, avant :
    Code:
    ereg("{([^ ]{1,})}",$ligne,$tag)
    Une fois modifiée :
    Code:
    preg_match(("{([^ ]{1,})}",$ligne,$tag)
    Seulement, ça ne fonctionne pas ; il y a un blocage dans la fonction.

    Ça ne fonctionne pas, je pense, à cause des délimiteurs. Je recherche dans ma page tout ce qui est de la forme :
    Code:
    {truc}
    Si quelqu'un pouvait me donner un coup de main, ça serait vraiment bien parce que là je m'en sort vraiment pas. :(
     
  8. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    Code:
    preg_match_all('/\{[^{]+\}/', $ligne, $tag);
    Fred
     
  9. Gaëtan R.
    Gaëtan R. WRInaute discret
    Inscrit:
    26 Avril 2004
    Messages:
    225
    J'aime reçus:
    0
    On avance, on avance, merci Fred :wink:

    Mais (eh oui, il y a un mais) c'est pas encore résolu :evil:, ma fonction passe,ça me trouve ma valeur entre crochet mais ça la remplace par rien du tout.

    Message d'erreur suivant dans mes logs...
    Code:
    PHP Notice:  Undefined offset:  1 in /hermes/data11/b648/toopy/test/library.php on line 9
    PHP Notice:  Undefined offset:  1 in /hermes/data11/b648/toopy/test/library.php on line 6
    PHP Notice:  Undefined offset:  1 in /hermes/data11/b648/toopy/test/library.php on line 9
    PHP Notice:  Undefined offset:  1 in /hermes/data11/b648/toopy/test/library.php on line 7
    PHP Notice:  Undefined offset:  1 in /hermes/data11/b648/toopy/test/library.php on line 6
    
    :cry:

    Donc y'a forcément un truc qui passe pas quelque part... Allez, hop, j'y retourne :!:
     
  10. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    Je ne sais pas quel traitement tu essayes de faire, mais si c'est un remplacement, utilise plutôt preg_replace()

    Fred
     
  11. Gaëtan R.
    Gaëtan R. WRInaute discret
    Inscrit:
    26 Avril 2004
    Messages:
    225
    J'aime reçus:
    0
    Le remplacement se fait ensuite avec un str_replace() ; il y a un test si il y a quelque chose à mettre à remplacer sinon ça met rien.

    Je ne perds pas espoir, est-ce que d'autres personnes travaillant sur serveur Unix et développant sur une plate forme windows auraient rencontrés des problèmes de ce type :?:

    Je travaille avec des sauts de ligne Unix (LF) configurés avec Dreamweaver et je fais mes upload en binaire. Si il y a d'autres choses à respecter...
     
  12. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    Un peu lourd comme traitement, peut-être. Tu pourrais utiliser preg_replace() en combinaison avec l'option E (voir ici), qui interprète la chaîne de remplacement comme du code PHP. Tu peux donc y mettre une fonction perso qui ferait le test et renverrait selon les cas l'élément par lequel remplacer ton {...}

    Exemple simplifié :

    Code:
    <?php
    function blabla($c) {
       if ($c != '123') {
          return 'chips';
       }
       else {
          return '';
       }
    }
    
    $chaine = 'ma chaine avec des {trucs} et des {bidules} partout ! {123}';
    
    echo preg_replace('/\{([^}]+)\}/e', 'blabla($1)', $chaine);
    ?>
    Bon, l'exemple est très con et donnera ma chaine avec des chips et des chips partout ! mais c'était juste pour te montrer le principe.

    Pour le reste, je ne peux pas t'aider, je ne suis pas sous Windows.

    Fred
     
  13. Oncle Tom
    Oncle Tom WRInaute impliqué
    Inscrit:
    31 Mars 2003
    Messages:
    714
    J'aime reçus:
    0
    En fait j'vais te filer une astuce pour améliorer la lisiblité de l'expression régulière :
    Code:
    echo preg_replace("#\{([^}]+)\}#e"', "blabla('$1')", $chaine); 
    
    Avec les # je trouve que ça passe mieux.

    PS : sinon j'aurais donné la même solution, un preg_match + str_replace non C pas top ;) là tu fais tout en un coup.
     
  14. Xethorn
    Xethorn Nouveau WRInaute
    Inscrit:
    10 Juin 2004
    Messages:
    37
    J'aime reçus:
    0
    Ta réponse est pas trop mal mais elle n'est pas sécurisé, et il suffit d'une seule double quote pour faire planter l'intégralité du système. Il faut convertir toutes les quotes (qu'elles soient doubles ou simples) avant de faire un traitement (ou effectuer un addslashes() mais là il y en aura à toutes les sauces et sur toutes les lignes).

    Les regex c'est bien mais à consommer avec modération.

    Ps : essaye de mettre dans ton texte une variable genre "$var" dans ton code php "$var='une valeur'", lance ta regex, tu risques fort d'être surpris :)
     
  15. Oncle Tom
    Oncle Tom WRInaute impliqué
    Inscrit:
    31 Mars 2003
    Messages:
    714
    J'aime reçus:
    0
    Ouais c'est sûr. Dans mon cas personne (comprendre : mon site)l j'exécute des remplacements sur des occurences connues donc j'ai aucun soucis ;)
     
  16. Gaëtan R.
    Gaëtan R. WRInaute discret
    Inscrit:
    26 Avril 2004
    Messages:
    225
    J'aime reçus:
    0
    Bon, un peu moins d'un mois après, je me suis de nouveau penché sur mon souci, étudié de près les fonctions régulières, testé vos solutions pour enfin trouver une solution. 8)

    En conclusion, je sais maintenant que les expressions régulières compatible PERL sont préférables à celles de type POSIX de par leur rapidité et du fait qu'elles fonctionnent parfaitement avec des données binaire (sur mon serveur Unix par exemple).

    Je remercie tout ceux qui m'ont apportés leur aide sur ce topic, je suis maintenant sorti de ce mauvais pas. :D

    Le résultat final : -http://www.toopy.com/sigmacom.

    N"hésiter pas à me faire part de vos avis, ce n'est pas encore la version finale.
     
Chargement...
Similar Threads - [Résolu][PHP] Problème fonction Forum Date
[Résolu][PHP] session_start() Développement d'un site Web ou d'une appli mobile 12 Janvier 2010
[Résolu][PHP] Insertion toutes les n fois Développement d'un site Web ou d'une appli mobile 1 Octobre 2006
[Resolu][PHP] Comment dédoubler (filtrer) propremt un site ? Administration d'un site Web 13 Septembre 2004
Gros problème sur la profondeur de mes pages Problèmes de référencement spécifiques à vos sites Vendredi à 09:06
Problème de htaccess chez Ionos URL Rewriting et .htaccess 12 Septembre 2022
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
Problème de crawl et d'indexation Crawl et indexation Google, sitemaps 1 Septembre 2022
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web 8 Août 2022
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022
Problème de vitesse d'affichage des pages sur Analytics Google Analytics 26 Avril 2022
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Problème avec GA4 : nb de visiteurs temps réel et par jour Google Analytics 19 Avril 2022