Changeset 26972


Ignore:
Timestamp:
Jan 26, 2014, 1:38:37 AM (10 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.