microphp/Core/Helpers.php

315 lines
8.5 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
static function from($data)
{
return new tstring($data);
}
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|bool
{
$mathes = [];
$matched = preg_match(
$pattern,
$this->data,
$mathes
);
return $matched ? $mathes : false;
}
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;
}
public function raw()
{
return $this->data;
}
}
function dd($data){
highlight_string("<?=\n\n" . var_export($data, true) . "\n\n?>");
die();
}
function includeAllSubFiles($path)
{
$files = scandir($path);
foreach ($files as $file) {
if(in_array($file,['.','..']))
{
continue;
}
$filepath = realpath("$path/$file");
require_once $filepath;
}
}
class Helper
{
public static function slugify($text) {
// Türkçe karakterleri Latin alfabesi karakterlerine dönüştür
$text = str_replace(array('ı', 'İ', 'ş', 'Ş', 'ğ', 'Ğ', 'ü', 'Ü', 'ö', 'Ö', 'ç', 'Ç'),
array('i', 'i', 's', 's', 'g', 'g', 'u', 'u', 'o', 'o', 'c', 'c'), $text);
// Unicode karakterleri değiştir
$text = preg_replace('/\p{M}/u', '', $text);
// Boşlukları tire ile değiştir
$text = str_replace(' ', '-', $text);
// Küçük harfe dönüştür
$text = strtolower($text);
return $text;
}
}