From 4b7f9e7005c4562f8b4b554ea5ea53fb1ebf804a Mon Sep 17 00:00:00 2001 From: Tom N Harris <tnharris@whoopdedo.org> Date: Thu, 28 May 2009 23:54:38 +0200 Subject: [PATCH] Change expensive uses of split to the much faster explode. darcs-hash:20090528215438-6942e-bf1b875e689ade6bd1a17e3d812ce16bf35c84a6.gz --- inc/auth.php | 4 ++-- inc/auth/plain.class.php | 4 ++-- inc/common.php | 6 +++--- inc/mail.php | 2 +- inc/pageutils.php | 2 +- inc/parser/handler.php | 12 +++++++----- inc/parser/lexer.php | 2 +- inc/parser/metadata.php | 2 +- 8 files changed, 18 insertions(+), 16 deletions(-) diff --git a/inc/auth.php b/inc/auth.php index 23031a29c..d497c89d6 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -166,7 +166,7 @@ function auth_login($user,$pass,$sticky=false,$silent=false){ }else{ // read cookie information $cookie = base64_decode($_COOKIE[DOKU_COOKIE]); - list($user,$sticky,$pass) = split('\|',$cookie,3); + list($user,$sticky,$pass) = explode('|',$cookie,3); // get session info $session = $_SESSION[DOKU_COOKIE]['auth']; if($user && $pass){ @@ -744,7 +744,7 @@ function updateprofile() { if ($result = $auth->triggerUserMod('modify', array($_SERVER['REMOTE_USER'], $changes))) { // update cookie and session with the changed data $cookie = base64_decode($_COOKIE[DOKU_COOKIE]); - list($user,$sticky,$pass) = split('\|',$cookie,3); + list($user,$sticky,$pass) = explode('|',$cookie,3); if ($changes['pass']) $pass = PMA_blowfish_encrypt($changes['pass'],auth_cookiesalt()); auth_setCookie($_SERVER['REMOTE_USER'],$pass,(bool)$sticky); diff --git a/inc/auth/plain.class.php b/inc/auth/plain.class.php index 02175d962..68976287a 100644 --- a/inc/auth/plain.class.php +++ b/inc/auth/plain.class.php @@ -278,8 +278,8 @@ class auth_plain extends auth_basic { $line = trim($line); if(empty($line)) continue; - $row = split(":",$line,5); - $groups = split(",",$row[4]); + $row = explode(":",$line,5); + $groups = array_values(array_filter(explode(",",$row[4]))); $this->users[$row[0]]['pass'] = $row[1]; $this->users[$row[0]]['name'] = urldecode($row[2]); diff --git a/inc/common.php b/inc/common.php index dfc563b7f..5c95115a6 100644 --- a/inc/common.php +++ b/inc/common.php @@ -884,7 +884,7 @@ function pageTemplate($data){ * @author Andreas Gohr <andi@splitbrain.org> */ function rawWikiSlices($range,$id,$rev=''){ - list($from,$to) = split('-',$range,2); + list($from,$to) = explode('-',$range,2); $text = io_readWikiPage(wikiFN($id, $rev), $id, $rev); if(!$from) $from = 0; if(!$to) $to = strlen($text)+1; @@ -1101,8 +1101,8 @@ function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){ $subject = $lang['mail_changed'].' '.$id; $text = str_replace('@OLDPAGE@',wl($id,"rev=$rev",true,'&'),$text); require_once(DOKU_INC.'inc/DifferenceEngine.php'); - $df = new Diff(split("\n",rawWiki($id,$rev)), - split("\n",rawWiki($id))); + $df = new Diff(explode("\n",rawWiki($id,$rev)), + explode("\n",rawWiki($id))); $dformat = new UnifiedDiffFormatter(); $diff = $dformat->format($df); }else{ diff --git a/inc/mail.php b/inc/mail.php index f127ea989..61d938cf8 100644 --- a/inc/mail.php +++ b/inc/mail.php @@ -125,7 +125,7 @@ function _mail_send_action($data) { */ function mail_encode_address($string,$header='',$names=true){ $headers = ''; - $parts = split(',',$string); + $parts = explode(',',$string); foreach ($parts as $part){ $part = trim($part); diff --git a/inc/pageutils.php b/inc/pageutils.php index c10272af3..65b140ea3 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -435,7 +435,7 @@ function resolve_pageid($ns,&$page,&$exists){ //keep hashlink if exists then clean both parts if (strpos($page,'#')) { - list($page,$hash) = split('#',$page,2); + list($page,$hash) = explode('#',$page,2); } else { $hash = ''; } diff --git a/inc/parser/handler.php b/inc/parser/handler.php index 5bcb3c2f0..83f837b70 100644 --- a/inc/parser/handler.php +++ b/inc/parser/handler.php @@ -363,7 +363,7 @@ class Doku_Handler { function code($match, $state, $pos) { switch ( $state ) { case DOKU_LEXER_UNMATCHED: - $matches = preg_split('/>/u',$match,2); + $matches = explode('>',$match,2); $matches[0] = trim($matches[0]); if ( trim($matches[0]) == '' ) { $matches[0] = NULL; @@ -444,7 +444,7 @@ class Doku_Handler { $link = preg_replace(array('/^\[\[/','/\]\]$/u'),'',$match); // Split title from URL - $link = preg_split('/\|/u',$link,2); + $link = explode('|',$link,2); if ( !isset($link[1]) ) { $link[1] = NULL; } else if ( preg_match('/^\{\{[^\}]+\}\}$/',$link[1]) ) { @@ -457,7 +457,7 @@ class Doku_Handler { if ( preg_match('/^[a-zA-Z0-9\.]+>{1}.*$/u',$link[0]) ) { // Interwiki - $interwiki = preg_split('/>/u',$link[0]); + $interwiki = explode('>',$link[0],2); $this->_addCall( 'interwikilink', array($link[0],$link[1],strtolower($interwiki[0]),$interwiki[1]), @@ -638,7 +638,7 @@ function Doku_Handler_Parse_Media($match) { $link = preg_replace(array('/^\{\{/','/\}\}$/u'),'',$match); // Split title from URL - $link = preg_split('/\|/u',$link,2); + $link = explode('|',$link,2); // Check alignment @@ -997,7 +997,9 @@ class Doku_Handler_List { } else { $type = 'o'; } - return count(explode(' ',str_replace("\t",' ',$match))); + // Is the +1 needed? It used to be count(explode(...)) + // but I don't think the number is seen outside this handler + return substr_count(str_replace("\t",' ',$match), ' ') + 1; } } diff --git a/inc/parser/lexer.php b/inc/parser/lexer.php index 86e818d9c..d2aaf407b 100644 --- a/inc/parser/lexer.php +++ b/inc/parser/lexer.php @@ -513,7 +513,7 @@ class Doku_Lexer { // modes starting with plugin_ are all handled by the same // handler but with an additional parameter if(substr($handler,0,7)=='plugin_'){ - list($handler,$plugin) = split('_',$handler,2); + list($handler,$plugin) = explode('_',$handler,2); return $this->_parser->$handler($content, $is_match, $pos, $plugin); } diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php index 79d774106..88d531af1 100644 --- a/inc/parser/metadata.php +++ b/inc/parser/metadata.php @@ -315,7 +315,7 @@ class Doku_Renderer_metadata extends Doku_Renderer { // first resolve and clean up the $id resolve_pageid(getNS($ID), $id, $exists); - list($page, $hash) = split('#', $id, 2); + list($page, $hash) = explode('#', $id, 2); // set metadata $this->meta['relation']['references'][$page] = $exists; -- GitLab