Changeset 26972


Ignore:
Timestamp:
01/26/14 01:38:37 (5 years ago)
Author:
mistic100
Message:

replace more preg_replace callback

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/history.php

    r26649 r26972  
    340340    name, url_name 
    341341  FROM '.TAGS_TABLE; 
     342 
     343    global $name_of_tag; // used for preg_replace 
    342344    $name_of_tag = array(); 
    343345    $result = pwg_query($query); 
     
    400402    if (isset($line['tag_ids'])) 
    401403    { 
    402       $tags_string = preg_replace( 
    403         '/(\d+)/e', 
    404         'isset($name_of_tag["$1"]) ? $name_of_tag["$1"] : "$1"', 
     404      $tags_string = preg_replace_callback( 
     405        '/(\d+)/', 
     406        create_function('$m', 'return isset($name_of_tag[$m[1]]) ? $name_of_tag[$m[1]] : $m[1];'), 
    405407        str_replace( 
    406408          ',', 
     
    542544      ) 
    543545    ); 
     546 
     547  unset($name_of_tag); 
    544548} 
    545549 
  • trunk/admin/include/functions.php

    r26928 r26972  
    583583  ORDER BY id_uppercat,rank,name'; 
    584584 
     585  global $cat_map; // used in preg_replace callback 
    585586  $cat_map = array(); 
    586587 
     
    609610  $datas = array(); 
    610611 
     612  $cat_map_callback = create_function('$m', 'global $cat_map; return $cat_map[$m[1]]["rank"];'); 
     613 
    611614  foreach( $cat_map as $id=>$cat ) 
    612615  { 
    613     $new_global_rank = preg_replace( 
    614           '/(\d+)/e', 
    615           "\$cat_map['$1']['rank']", 
    616           str_replace(',', '.', $cat['uppercats'] ) 
    617           ); 
     616    $new_global_rank = preg_replace_callback( 
     617      '/(\d+)/', 
     618      $cat_map_callback, 
     619      str_replace(',', '.', $cat['uppercats'] ) 
     620      ); 
     621 
    618622    if ( $cat['rank_changed'] 
    619623      or $new_global_rank!=$cat['global_rank'] 
     
    627631    } 
    628632  } 
     633 
     634  unset($cat_map); 
    629635 
    630636  mass_updates( 
  • trunk/include/emogrifier.class.php

    r25344 r26972  
    3636    2012-05-01  Made removal of invisible nodes operate in a case-insensitive manner... Thanks Juha P.! 
    3737    2013-10-10  Add preserveStyleTag option 
     38    2014-01-26  PHP 5.5 compatibility (/e modifier is deprecated in preg_replace) 
    3839*/ 
    3940 
     
    125126        $nodes = @$xpath->query('//*[@style]'); 
    126127        foreach ($nodes as $node) { 
    127             $normalizedOrigStyle = preg_replace('/[A-z\-]+(?=\:)/Se',"strtolower('\\0')", $node->getAttribute('style')); 
     128            $normalizedOrigStyle = preg_replace_callback('/[A-z\-]+(?=\:)/S',create_function('$m', 'return strtolower($m[0]);'),$node->getAttribute('style')); 
    128129 
    129130            // in order to not overwrite existing style attributes in the HTML, we have to save the original HTML styles 
     
    300301                               '/(\w)\[(\w+)\]/', // Matches element with attribute 
    301302                               '/(\w)\[(\w+)\=[\'"]?(\w+)[\'"]?\]/', // Matches element with EXACT attribute 
    302                                '/(\w+)?\#([\w\-]+)/e', // Matches id attributes 
    303                                '/(\w+|[\*\]])?((\.[\w\-]+)+)/e', // Matches class attributes 
    304  
    305303            ); 
    306304            $replace = array( 
     
    312310                               '\\1[@\\2]', 
    313311                               '\\1[@\\2="\\3"]', 
    314                                "(strlen('\\1') ? '\\1' : '*').'[@id=\"\\2\"]'", 
    315                                "(strlen('\\1') ? '\\1' : '*').'[contains(concat(\" \",@class,\" \"),concat(\" \",\"'.implode('\",\" \"))][contains(concat(\" \",@class,\" \"),concat(\" \",\"',explode('.',substr('\\2',1))).'\",\" \"))]'", 
    316312            ); 
    317313 
    318314            $css_selector = '//'.preg_replace($search, $replace, $css_selector); 
     315 
     316            // matches ids and classes 
     317            $css_selector = preg_replace_callback('/(\w+)?\#([\w\-]+)/', array($this, 'matchIdAttributes'), $css_selector); 
     318            $css_selector = preg_replace_callback('/(\w+|[\*\]])?((\.[\w\-]+)+)/', array($this, 'matchClassAttributes'), $css_selector); 
    319319 
    320320            // advanced selectors are going to require a bit more advanced emogrification 
     
    326326        } 
    327327        return $this->caches[CACHE_SELECTOR][$xpathkey]; 
     328    } 
     329 
     330    private function matchIdAttributes($m) { 
     331      return (strlen($m[1]) ? $m[1] : '*').'[@id="'.$m[2].'"]'; 
     332    } 
     333 
     334    private function matchClassAttributes($m) { 
     335      return (strlen($m[1]) ? $m[1] : '*').'[contains(concat(" ",@class," "),concat(" ","'.implode('"," "))][contains(concat(" ",@class," "),concat(" ","',explode('.',substr($m[2],1))).'"," "))]'; 
    328336    } 
    329337 
Note: See TracChangeset for help on using the changeset viewer.