You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.5 KiB
PHP
77 lines
2.5 KiB
PHP
<?php
|
|
namespace Isekai\Widgets;
|
|
|
|
class Utils {
|
|
public static function safeBase64Encode($input) {
|
|
return str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($input));
|
|
}
|
|
|
|
public static function makeParagraph($text, $hasUniq = false, $indent = false) {
|
|
$text = str_replace("\r\n", "\n", $text);
|
|
if (strpos($text, "\n\n") === false) {
|
|
return $text;
|
|
}
|
|
$prepend = "";
|
|
$append = "";
|
|
if ($hasUniq) {
|
|
$splitPoint = strpos($text, "\n", 1) + 1;
|
|
$prepend = substr($text, 0, $splitPoint);
|
|
$text = substr($text, $splitPoint);
|
|
}
|
|
preg_match("/(\<\/div[^\>]*?\>|\n)+$/", $text, $matches);
|
|
if (count($matches) > 0) {
|
|
$append = $matches[0];
|
|
$text = substr($text, 0, -1 * strlen($append));
|
|
$tagNum = substr_count($append, '</div');
|
|
preg_match('/^(\<div[^\>]*?\>){' . $tagNum . '}/', $text, $matches);
|
|
if (count($matches) > 0) {
|
|
$prepend .= $matches[0];
|
|
$text = substr($text, strlen($matches[0]));
|
|
}
|
|
}
|
|
|
|
$lines = explode("\n\n", $text);
|
|
|
|
$stringBuilder = [$prepend];
|
|
foreach ($lines as $lineNum => $line) {
|
|
if ($lineNum > 0 && $indent) {
|
|
$elemAttr = [
|
|
'class' => 'paragraph-indent'
|
|
];
|
|
} else {
|
|
$elemAttr = [];
|
|
}
|
|
$stringBuilder[] = \Html::rawElement('p', $elemAttr, $line);
|
|
}
|
|
$stringBuilder[] = $append;
|
|
return implode('', $stringBuilder);
|
|
}
|
|
|
|
public static function strContains(string $haystack, array $needle) {
|
|
foreach ($needle as $one) {
|
|
if (strpos($haystack, $one) !== false) {
|
|
return $one;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function trimEach(array $arr) {
|
|
foreach ($arr as $key => $value) {
|
|
$arr[$key] = trim($value);
|
|
}
|
|
return $arr;
|
|
}
|
|
|
|
public static function getKeyValue(string $separator, string $str) {
|
|
$sepLen = strlen($separator);
|
|
$sepOffset = strpos($str, $separator);
|
|
if ($sepOffset === false) {
|
|
return [null, $str];
|
|
} else {
|
|
$key = trim(substr($str, 0, $sepOffset));
|
|
$value = trim(substr($str, $sepOffset + $sepLen));
|
|
return [$key, $value];
|
|
}
|
|
}
|
|
} |