Voting

: zero plus six?
(Example: nine)

The Note You're Voting On

fatihmertdogancan at hotmail dot com
11 years ago
[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..

<< Back to user notes page

To Top