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 :

Appel preg_replace_callback en erreur suivant version php


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut Appel preg_replace_callback en erreur suivant version php
    Bonjour,

    Suite au test ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $str="afezazef\u00e9t efze\u00e9teee fff ";
     
    function unicode2html_2($str){
    	$str = preg_replace_callback(
    		'#\\\\u([0-9a-fA-F]{4})#', 
    		function ($match) {	return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');}, 
    		$str
    		);
    	return $str;
    }
     
    echo unicode2html_2($str);
    Sur mon ordinateur local , version php 5.6.35, cela me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    afezazefét efzeéteee fff
    Je transfert le fichier sur un serveur linux, la version est php 5.2.13, l'éxécution du script tombe en erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /usr/local/php5/bin/php 19.php
    Status: 500 Internal Server Error
    Content-type: text/html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Log php :
    PHP Parse error:  syntax error, unexpected T_FUNCTION in 19.php on line 7
    Je n'arrive pas a comprendre le pourquoi, pouvez-vous m'aidez s'il vous plait ?

    Merci beaucoup

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Avant PHP 5.3 , vous ne pouvez-pas utilisez les closures .

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A noter que PHP 5.2 n'est plus maintenu depuis 2011 (autrement dit plus de 7 ans), il serait peut-être temps d'envisager une montée de version
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    C'est vrai que php 5.2 c'est pas tout jeune. Ce que tu peux faire pour éviter la closure, c'est simplement d'écrire la fonction et de passer son nom en paramètre à preg_replace_callback (ça marche quelque soit la version et ça évite d'utiliser create_function):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function convertMatch($m) {
        return mb_convert_encoding(pack("H*", $m[1]), "UTF-8", "UCS-2BE");
    }
     
    function unicode2html($str) {
        return preg_replace_callback('#\\\\u([0-9a-fA-F]{4})#', 'convertMatch', $str);
    }
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Parse error: syntax error, unexpected '<'
    500 Internal Server Error - FatalThrowableError

    Stack Trace
    in src\DPC\PlatformBundle\Controller\AdvertController.php at line 14 -
    {
    public function indexAction()
    {
    <?php
    $content = $this
    ->get('templating')
    ->render('DPCPlatformBundle:Advert:index.html.twig', array('nom' => 'winzou'))

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Je ne sais pas ce que vous voulez et encore moins ce que vous connaissez, mais ceci est juste une blague


    public function indexAction()
    {
    <?php
    $content = $this
    ->get('templating')
    ->render('DPCPlatformBundle:Advert:index.html.twig', array('nom' => 'winzou'))

Discussions similaires

  1. [MySQL] erreur suite a changement de version php
    Par cyril-34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/01/2016, 18h14
  2. Affichage suivant versions de PHP sur MAMP
    Par rvm31 dans le forum Langage
    Réponses: 1
    Dernier message: 19/07/2014, 08h52
  3. Appel d'un web service en php VersionMismatch, Wrong Version
    Par lepotier dans le forum XML/XSL et SOAP
    Réponses: 21
    Dernier message: 10/09/2012, 17h23
  4. [MySQL] Erreur Catchable fatal error suite montée de version PHP
    Par dide12 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2011, 09h51
  5. [MySQL] Message d'erreur depuis migration dernière version PHP
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/09/2009, 20h30

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