274 lines
7.3 KiB
PHP
274 lines
7.3 KiB
PHP
|
<?php
|
||
|
include_once "Reflection.php";
|
||
|
function isRegex($string)
|
||
|
{
|
||
|
$mathes = [];
|
||
|
$execute = preg_match(
|
||
|
"/^\/.*\/[imsxADSUXJu]+$/",
|
||
|
$string,
|
||
|
$mathes
|
||
|
);
|
||
|
return $execute;
|
||
|
}
|
||
|
class tstring
|
||
|
{
|
||
|
use ReflectionHook;
|
||
|
protected $data = "";
|
||
|
static function isstring($data)
|
||
|
{
|
||
|
if(gettype($data) == "string")
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
if(gettype($data) == "object")
|
||
|
{
|
||
|
return method_exists($data, "__toString");
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
public function __construct($data = "")
|
||
|
{
|
||
|
$this->data = $data;
|
||
|
}
|
||
|
public function getLengthAttribute()
|
||
|
{
|
||
|
return strlen($this->data);
|
||
|
}
|
||
|
public function at($index) : string
|
||
|
{
|
||
|
return $this->data[$index] ?? "";
|
||
|
}
|
||
|
public function charAt($index) : string
|
||
|
{
|
||
|
return $this->at($index);
|
||
|
}
|
||
|
public function concat(...$string) : tstring
|
||
|
{
|
||
|
return new tstring(
|
||
|
implode('',[
|
||
|
$this->data,
|
||
|
...$string
|
||
|
])
|
||
|
);
|
||
|
}
|
||
|
public function endsWith($string) : bool
|
||
|
{
|
||
|
if(PHP_MAJOR_VERSION >= 8)
|
||
|
{
|
||
|
return str_ends_with($this->data, $string);
|
||
|
};
|
||
|
$size = strlen($string);
|
||
|
if(substr($this->data, -$size) == $string)
|
||
|
{
|
||
|
return true;
|
||
|
}else{
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
public function startsWith($string) : bool
|
||
|
{
|
||
|
if(PHP_MAJOR_VERSION >= 8)
|
||
|
{
|
||
|
return str_starts_with($this->data, $string);
|
||
|
};
|
||
|
$size = strlen($string);
|
||
|
if(substr($this->data, 0, $size) == $string)
|
||
|
{
|
||
|
return true;
|
||
|
}else{
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
public function match($pattern) : array
|
||
|
{
|
||
|
$mathes = [];
|
||
|
preg_match(
|
||
|
$pattern,
|
||
|
$this->data,
|
||
|
$mathes
|
||
|
);
|
||
|
return $mathes;
|
||
|
}
|
||
|
public function matchAll($pattern) : array
|
||
|
{
|
||
|
$mathes = [];
|
||
|
preg_match_all(
|
||
|
$pattern,
|
||
|
$this->data,
|
||
|
$mathes
|
||
|
);
|
||
|
return $mathes;
|
||
|
}
|
||
|
public function padStart($length, $padString = " ")
|
||
|
{
|
||
|
return new tstring(
|
||
|
str_pad(
|
||
|
$this->data,
|
||
|
$length,
|
||
|
$padString,
|
||
|
STR_PAD_RIGHT
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
public function padEnd($length, $padString = " ")
|
||
|
{
|
||
|
return new tstring(
|
||
|
str_pad(
|
||
|
$this->data,
|
||
|
$length,
|
||
|
$padString,
|
||
|
STR_PAD_LEFT
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
public function repeat($count)
|
||
|
{
|
||
|
return new tstring(
|
||
|
str_repeat(
|
||
|
$this->data,
|
||
|
$count
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
public function replace($pattern, $subject = "")
|
||
|
{
|
||
|
if(gettype($pattern) == "array")
|
||
|
{
|
||
|
$a = [];
|
||
|
$b = [];
|
||
|
foreach ($pattern as $key => $value) {
|
||
|
$a[] = $key;
|
||
|
$b[] = $value ?? "";
|
||
|
};
|
||
|
return new tstring(
|
||
|
str_replace($a, $b, $this->data)
|
||
|
);
|
||
|
}else if(gettype($pattern) == "string" && isRegex($pattern))
|
||
|
{
|
||
|
return new tstring(
|
||
|
preg_replace(
|
||
|
$pattern,
|
||
|
$subject,
|
||
|
$this->data
|
||
|
)
|
||
|
);
|
||
|
}else{
|
||
|
return new tstring(
|
||
|
str_replace(
|
||
|
$pattern,
|
||
|
$subject,
|
||
|
$this->data
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
public function ireplace($pattern, $subject = "")
|
||
|
{
|
||
|
if(gettype($pattern) == "array")
|
||
|
{
|
||
|
$a = [];
|
||
|
$b = [];
|
||
|
foreach ($pattern as $key => $value) {
|
||
|
$a[] = $key;
|
||
|
$b[] = $value ?? "";
|
||
|
};
|
||
|
return new tstring(
|
||
|
str_ireplace($a, $b, $this->data)
|
||
|
);
|
||
|
}else if(gettype($pattern) == "string" && isRegex($pattern))
|
||
|
{
|
||
|
return new tstring(
|
||
|
preg_replace(
|
||
|
$pattern,
|
||
|
$subject,
|
||
|
$this->data
|
||
|
)
|
||
|
);
|
||
|
}else{
|
||
|
return new tstring(
|
||
|
str_ireplace(
|
||
|
$pattern,
|
||
|
$subject,
|
||
|
$this->data
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
public function search($string)
|
||
|
{
|
||
|
return strpos($this->data, $string);
|
||
|
}
|
||
|
public function isearch($string)
|
||
|
{
|
||
|
return stripos($this->data, $string);
|
||
|
}
|
||
|
public function slice($start = 0, $end = null)
|
||
|
{
|
||
|
return new tstring(
|
||
|
substr(
|
||
|
$this->data,
|
||
|
$start,
|
||
|
$end
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
public function split($delimiter)
|
||
|
{
|
||
|
return array_map(
|
||
|
function($e){
|
||
|
return new tstring($e);
|
||
|
},
|
||
|
explode($delimiter, $this->data)
|
||
|
);
|
||
|
}
|
||
|
public function splitjoin($delimiter, $glue)
|
||
|
{
|
||
|
return new tstring(
|
||
|
implode(
|
||
|
$glue,
|
||
|
explode($delimiter, $this->data)
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
public function wrap($delimiter, $glue, $callback)
|
||
|
{
|
||
|
return new tstring(
|
||
|
implode(
|
||
|
$glue,
|
||
|
array_map(
|
||
|
function($item) use($callback)
|
||
|
{
|
||
|
return $callback(new tstring($item));
|
||
|
},
|
||
|
explode($delimiter, $this->data)
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
public function toLowerCase()
|
||
|
{
|
||
|
return new tstring(
|
||
|
strtolower($this->data)
|
||
|
);
|
||
|
}
|
||
|
public function toUpperCase()
|
||
|
{
|
||
|
return new tstring(
|
||
|
strtoupper($this->data)
|
||
|
);
|
||
|
}
|
||
|
public function trim()
|
||
|
{
|
||
|
return new tstring(
|
||
|
trim($this->data)
|
||
|
);
|
||
|
}
|
||
|
public function __toString()
|
||
|
{
|
||
|
return $this->data;
|
||
|
}
|
||
|
}
|
||
|
function dd($data){
|
||
|
highlight_string("<?=\n\n" . var_export($data, true) . "\n\n?>");
|
||
|
die();
|
||
|
}
|