Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    14

    Sostituire preg_replace con preg_replace _callback

    Buongiorno a tutti il fornitore di hosting dove e' ospitato il mio sito web ha fatto un upgrade di versione del php precisamente alla vversione 5.5.38 dopo questo upgrade alcune funzione risultano deprecated, pertanto sto cercando di sostituire appunto tutte le funzioni deprecated.

    Nel caso di specie pero' non riesco proprio a sostituire preg_replace con preg_replace_callback vi posto il codice doce devo fare appunto questa modifiche, riuscite a darmi una mano nella sostituzione almeno di una di queste funzioni?

    Grazie a tutti in anticipo

    <?php

    function named_to_numeric ($string) {
    global $_entities;
    $string = strtr($string, $_entities['latin']);
    $string = strtr($string, $_entities['extended']);
    return $string;
    }

    function normalize_numeric ($string) {
    global $_entities;
    $string = strtr($string, $_entities['cp1251']);
    $string = preg_replace('/&#([0-9]+)/e', "'&#x'.dechex('\\1')", $string);
    $string = preg_replace('/&#[Xx]([0-9A-Fa-f]+)(;?|([^A-Za-z0-9\;\:\.\-\_]))/', '&#x\\1;\\3', $string);
    return $string;
    }

    function numeric_to_utf8 ($string) {
    $string = preg_replace('/&#([0-9]+)/e', "'&#x0'.dechex('\\1')", $string);
    $string = preg_replace('/&#[Xx]([0-9A-Fa-f]+);/e', "_hex_to_utf8('\\1')", $string);
    return $string;

    }

    function numeric_to_named ($string) {
    global $_entities;
    $string = preg_replace('/&#[Xx]([0-9A-Fa-f]+)/e', "'&#'.hexdec('\\1')", $string);
    $string = strtr($string, array_flip($_entities['latin']));
    $string = strtr($string, array_flip($_entities['extended']));
    return $string;
    }

    function specialchars ($string, $type = 'xml') {
    $apos = $type == 'xml' ? '&apos;' : ''';
    $specialchars = array (
    '&quot;' => '&quot;', '&amp;' => '&amp;',
    '&apos;' => $apos, '&lt;' => '&lt;',
    '&gt;' => '&gt;', '"' => '&quot;',
    '&' => '&amp;', "'" => $apos,
    '<' => '&lt;', '>' => '&gt;'
    );

    $string = preg_replace('/&(#?[Xx]?[0-9A-Za-z]+);/', "[[[ENTITY:\\1]]]", $string);
    $string = strtr($string, $specialchars);
    $string = preg_replace('/\[\[\[ENTITY\[^\]]+)\]\]\]/', "&\\1;", $string);
    return $string;
    }


    function _hex_to_utf8($s)
    {
    /* IN: string containing one hexadecimal Unicode character
    * OUT: string containing one binary UTF-8 character
    */

    $c = hexdec($s);

    if ($c < 0x80) {
    $str = chr($c);
    }
    else if ($c < 0x800) {
    $str = chr(0xC0 | $c>>6) . chr(0x80 | $c & 0x3F);
    }
    else if ($c < 0x10000) {
    $str = chr(0xE0 | $c>>12) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);
    }
    else if ($c < 0x200000) {
    $str = chr(0xF0 | $c>>18) . chr(0x80 | $c>>12 & 0x3F) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);
    }

    return $str;
    }


    $_entities['cp1251'] = array (
    '&#128' => '&#8364', '&#130' => '&#8218', '&#131' => '&#402',
    '&#132' => '&#8222', '&#133' => '&#8230', '&#134' => '&#8224',
    '&#135' => '&#8225', '&#136' => '&#710', '&#137' => '&#8240',
    '&#138' => '&#352', '&#139' => '&#8249', '&#140' => '&#338',
    '&#142' => '&#381', '&#145' => '&#8216', '&#146' => '&#8217',
    '&#147' => '&#8220', '&#148' => '&#8221', '&#149' => '&#8226',
    '&#150' => '&#8211', '&#151' => '&#8212', '&#152' => '&#732',
    '&#153' => '&#8482', '&#154' => '&#353', '&#155' => '&#8250',
    '&#156' => '&#339', '&#158' => '&#382', '&#159' => '&#376',
    );

    $_entities['latin'] = array (
    '&nbsp' => '&#160', '&iexcl' => '&#161', '&cent' => '&#162',
    '&pound' => '&#163', '&curren' => '&#164', '&yen' => '&#165',
    '&brvbar' => '&#166', '&sect' => '&#167', '&uml' => '&#168',
    '&copy' => '&#169', '&ordf' => '&#170', '&laquo' => '&#171',
    '&not' => '&#172', '&shy' => '&#173', '&reg' => '&#174',
    '&macr' => '&#175', '&deg' => '&#176', '&plusmn' => '&#177',
    '&sup2' => '&#178', '&sup3' => '&#179', '&acute' => '&#180',
    '&micro' => '&#181', '&para' => '&#182', '&middot' => '&#183',
    '&cedil' => '&#184', '&sup1' => '&#185', '&ordm' => '&#186',
    '&raquo' => '&#187', '&frac14' => '&#188', '&frac12' => '&#189',
    '&frac34' => '&#190', '&iquest' => '&#191', '&Agrave' => '&#192',
    '&Aacute' => '&#193', '&Acirc' => '&#194', '&Atilde' => '&#195',
    '&Auml' => '&#196', '&Aring' => '&#197', '&AElig' => '&#198',
    '&Ccedil' => '&#199', '&Egrave' => '&#200', '&Eacute' => '&#201',
    '&Ecirc' => '&#202', '&Euml' => '&#203', '&Igrave' => '&#204',
    '&Iacute' => '&#205', '&Icirc' => '&#206', '&Iuml' => '&#207',
    '&ETH' => '&#208', '&Ntilde' => '&#209', '&Ograve' => '&#210',
    '&Oacute' => '&#211', '&Ocirc' => '&#212', '&Otilde' => '&#213',
    '&Ouml' => '&#214', '&times' => '&#215', '&Oslash' => '&#216',
    '&Ugrave' => '&#217', '&Uacute' => '&#218', '&Ucirc' => '&#219',
    '&Uuml' => '&#220', '&Yacute' => '&#221', '&THORN' => '&#222',
    '&szlig' => '&#223', '&agrave' => '&#224', '&aacute' => '&#225',
    '&acirc' => '&#226', '&atilde' => '&#227', '&auml' => '&#228',
    '&aring' => '&#229', '&aelig' => '&#230', '&ccedil' => '&#231',
    '&egrave' => '&#232', '&eacute' => '&#233', '&ecirc' => '&#234',
    '&euml' => '&#235', '&igrave' => '&#236', '&iacute' => '&#237',
    '&icirc' => '&#238', '&iuml' => '&#239', '&eth' => '&#240',
    '&ntilde' => '&#241', '&ograve' => '&#242', '&oacute' => '&#243',
    '&ocirc' => '&#244', '&otilde' => '&#245', '&ouml' => '&#246',
    '&divide' => '&#247', '&oslash' => '&#248', '&ugrave' => '&#249',
    '&uacute' => '&#250', '&ucirc' => '&#251', '&uuml' => '&#252',
    '&yacute' => '&#253', '&thorn' => '&#254', '&yuml' => '&#255',
    );

    $_entities['extended'] = array (
    '&OElig' => '&#338', '&oelig' => '&#229', '&Scaron' => '&#352',
    '&scaron' => '&#353', '&Yuml' => '&#376', '&circ' => '&#710',
    '&tilde' => '&#732', '&esnp' => '&#8194', '&emsp' => '&#8195',
    '&thinsp' => '&#8201', '&zwnj' => '&#8204', '&zwj' => '&#8205',
    '&lrm' => '&#8206', '&rlm' => '&#8207', '&ndash' => '&#8211',
    '&mdash' => '&#8212', '&lsquo' => '&#8216', '&rsquo' => '&#8217',
    '&sbquo' => '&#8218', '&ldquo' => '&#8220', '&rdquo' => '&#8221',
    '&bdquo' => '&#8222', '&dagger' => '&#8224', '&Dagger' => '&#8225',
    '&permil' => '&#8240', '&lsaquo' => '&#8249', '&rsaquo' => '&#8250',
    '&euro' => '&#8364', '&fnof' => '&#402', '&Alpha' => '&#913',

    );


    ?>

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    La documentazione di php non indica preg_replace come "deprecated". Anzi è valida anche in php 7.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    14
    Quote Originariamente inviata da badaze Visualizza il messaggio
    La documentazione di php non indica preg_replace come "deprecated". Anzi è valida anche in php 7.
    penso che ti sbagli di seguito quoto esito xdebug

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\xampp\htdocs\includes\entity.php on line 19

    e qui e' dichiarata proprio deprecated

    http://php.net/manual/en/migration55.deprecated.php

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Scusa. Non è la funzione che è deprecata ma il modifier /e.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il modifier 'e' valuta la stringa come codice php (da quello che ho capito). Hai provato a toglierlo e vedere se funziona sempre ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.