note 114219 added to function.substr
| From: | fatihmertdogancan at hotmail dot com | 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