note 114219 added to function.substr

From: Date: Sun, 26 Jan 2014 08:29:01 +0000
Subject: note 114219 added to function.substr
Groups: php.notes 
Request: Send a blank email to php-notes+get-198350@lists.php.net to get a copy of this message
[English] I created python similar accesing list or string with php substr & strrev functions. Use: str($string,$pattern) About the python pattern, http://docs.python.org/release/1.5.1p1/tut/strings.html http://effbot.org/zone/python-list.htm About of pattern structures [start:stop:step] Example, <?php $s = "fatihmertdogancan"; echo str($s,"1:9:-2"); echo "<br/>"; echo str($s,"1:-3:-2"); echo "<br/>"; echo str($s,"1:-11:-5"); echo "<br/>"; echo str($s,"1:9:4"); ?> Output, thetoacn eht aom htan This is function phpfiddle link: http://phpfiddle.org/main/code/e82-y5d or source; <?php function str($str,$pattern){ //[start:stop:step] //pattern -> ([-]?[0-9]*|\s):([-]?[0-9]*|\s):([-]?[0-9]*|\s) preg_match("/([-]?[0-9]*|\s?):([-]?[0-9]*|\s?):?([-]?[0-9]*|\s?)/", $pattern, $yakala); $start = $yakala[1]; $stop = $yakala[2]; $step = $yakala[3]; if(empty($start) && empty($stop) && $step == "-1"){//istisna durum return strrev($str); }else if(empty($start) && empty($stop) && isset($step)){//istisna durum $rev = ""; $yeni = ""; if($step[0] == "-" && $stop != "-1"){$rev = "VAR";} $atla = abs($step); for($i = 0; $i <= strlen($str); $i++){ $offset = $i*$atla; if(isset($str[$offset])){ $yeni = $yeni.$str[$offset]; } } if($rev != "VAR"){ return substr($yeni,0,strlen($str)-1); //"hepsi boş, step dolu o da +"; }else{ return strrev(substr($yeni,0,strlen($str)-1)); //"hepsi boş, step dolu o da -"; } } if(empty($start) && empty($stop) && empty($step)){ return $str; //"hepsi boş"; }else if(empty($start)){ if(isset($stop) && empty($step)){ $rev = ""; if($stop[0] == "-"){$rev = "VAR";} if($rev != "VAR"){ return substr($str,0,$stop); //"start ve step boş, stop dolu" }else{ return strrev(substr($str,0,$stop)); //"start ve step boş, stop -1"; } }else if(isset($stop) && isset($step)){ $rev = ""; if($stop[0] == "-"){$rev = "VAR";} $yeni = ""; if($step == 1){ if($rev != "VAR"){ return $str; //"start boş, stop ve step dolu, step 1"; }else{ return strrev(substr($str,0,abs($stop))); //abs -> mutlak değer (-5 = 5) //"start boş, stop -, step dolu, step 1"; } }else{ $atla = abs($step); for($i = 0; $i <= strlen($str); $i++){ $offset = $i*$atla; if(isset($str[$offset])){ $yeni = $yeni.$str[$offset]; } } if($rev != "VAR"){ return substr($yeni,0,$stop); //"start boş, step ve stop dolu"; }else{ return strrev(substr($yeni,0,abs($stop))); //"start boş, step ve stop -"; } } } //start boş değilse }else if(!empty($start)){ if(isset($stop) && empty($step)){ $rev = ""; if($stop[0] == "-"){$rev = "VAR";} if($rev != "VAR"){ return substr($str,$start,$stop); //return "step boş, start ve stop dolu"; }else{ return strrev(substr($str,0,abs($stop))); //"step boş, start ve stop dolu, stop -"; } }else if(isset($stop) && isset($step)){ //hepsi dolu $rev = ""; if($stop[0] == "-"){$rev = "VAR";} $yeni = ""; if($step == 1){ if($rev != "VAR"){ return substr($str,$start,$stop); //"hepsi dolu, step 1"; }else{ return substr($str,$start,abs($stop)); //"hepsi dolu, step 1, stop -"; } }else{ if($stop[0] == "-"){$rev = "VAR";} $atla = abs($step); for($i = 0; $i <= strlen($str); $i++){ $offset = $i*$atla; if(isset($str[$offset])){ $yeni = $yeni.$str[$offset]; } } if($rev != "VAR"){ return substr($yeni,$start,$stop); //"hepsi dolu"; }else{ return strrev(substr($yeni,$start,abs($stop))); //"hepsi dolu, stop -"; } } } } } ?> Good works.. ---- Server IP: 160.75.25.15 Probable Submitter: 91.93.157.11 ---- Manual Page -- http://php.net/manual/en/function.substr.php Edit -- https://master.php.net/note/edit/114219 Del: integrated -- https://master.php.net/note/delete/114219/integrated Del: useless -- https://master.php.net/note/delete/114219/useless Del: bad code -- https://master.php.net/note/delete/114219/bad+code Del: spam -- https://master.php.net/note/delete/114219/spam Del: non-english -- https://master.php.net/note/delete/114219/non-english Del: in docs -- https://master.php.net/note/delete/114219/in+docs Del: other reasons-- https://master.php.net/note/delete/114219 Reject -- https://master.php.net/note/reject/114219 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#198350) next »