Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/flow-flo.../libs/cakephp/utility
File: Text.php
$html = $format = $limit = null;
[500] Fix | Delete
/**
[501] Fix | Delete
* @var bool $html
[502] Fix | Delete
* @var string|array $format
[503] Fix | Delete
* @var int $limit
[504] Fix | Delete
*/
[505] Fix | Delete
extract($options);
[506] Fix | Delete
[507] Fix | Delete
if (is_array($phrase)) {
[508] Fix | Delete
$replace = [];
[509] Fix | Delete
$with = [];
[510] Fix | Delete
[511] Fix | Delete
foreach ($phrase as $key => $segment) {
[512] Fix | Delete
$segment = '(' . preg_quote($segment, '|') . ')';
[513] Fix | Delete
if ($html) {
[514] Fix | Delete
$segment = "(?![^<]+>)$segment(?![^<]+>)";
[515] Fix | Delete
}
[516] Fix | Delete
[517] Fix | Delete
$with[] = is_array($format) ? $format[$key] : $format;
[518] Fix | Delete
$replace[] = sprintf($options['regex'], $segment);
[519] Fix | Delete
}
[520] Fix | Delete
[521] Fix | Delete
return preg_replace($replace, $with, $text, $limit);
[522] Fix | Delete
}
[523] Fix | Delete
[524] Fix | Delete
$phrase = '(' . preg_quote($phrase, '|') . ')';
[525] Fix | Delete
if ($html) {
[526] Fix | Delete
$phrase = "(?![^<]+>)$phrase(?![^<]+>)";
[527] Fix | Delete
}
[528] Fix | Delete
[529] Fix | Delete
return preg_replace(sprintf($options['regex'], $phrase), $format, $text, $limit);
[530] Fix | Delete
}
[531] Fix | Delete
[532] Fix | Delete
/**
[533] Fix | Delete
* Strips given text of all links (<a href=....).
[534] Fix | Delete
*
[535] Fix | Delete
* *Warning* This method is not an robust solution in preventing XSS
[536] Fix | Delete
* or malicious HTML.
[537] Fix | Delete
*
[538] Fix | Delete
* @param string $text Text
[539] Fix | Delete
* @return string The text without links
[540] Fix | Delete
* @deprecated 3.2.12 This method will be removed in 4.0.0
[541] Fix | Delete
*/
[542] Fix | Delete
public static function stripLinks($text)
[543] Fix | Delete
{
[544] Fix | Delete
deprecationWarning('This method will be removed in 4.0.0.');
[545] Fix | Delete
do {
[546] Fix | Delete
$text = preg_replace('#</?a([/\s][^>]*)?(>|$)#i', '', $text, -1, $count);
[547] Fix | Delete
} while ($count);
[548] Fix | Delete
[549] Fix | Delete
return $text;
[550] Fix | Delete
}
[551] Fix | Delete
[552] Fix | Delete
/**
[553] Fix | Delete
* Truncates text starting from the end.
[554] Fix | Delete
*
[555] Fix | Delete
* Cuts a string to the length of $length and replaces the first characters
[556] Fix | Delete
* with the ellipsis if the text is longer than length.
[557] Fix | Delete
*
[558] Fix | Delete
* ### Options:
[559] Fix | Delete
*
[560] Fix | Delete
* - `ellipsis` Will be used as beginning and prepended to the trimmed string
[561] Fix | Delete
* - `exact` If false, $text will not be cut mid-word
[562] Fix | Delete
*
[563] Fix | Delete
* @param string $text String to truncate.
[564] Fix | Delete
* @param int $length Length of returned string, including ellipsis.
[565] Fix | Delete
* @param array $options An array of options.
[566] Fix | Delete
* @return string Trimmed string.
[567] Fix | Delete
*/
[568] Fix | Delete
public static function tail($text, $length = 100, array $options = [])
[569] Fix | Delete
{
[570] Fix | Delete
$default = [
[571] Fix | Delete
'ellipsis' => '...', 'exact' => true,
[572] Fix | Delete
];
[573] Fix | Delete
$options += $default;
[574] Fix | Delete
$exact = $ellipsis = null;
[575] Fix | Delete
/**
[576] Fix | Delete
* @var string $ellipsis
[577] Fix | Delete
* @var bool $exact
[578] Fix | Delete
*/
[579] Fix | Delete
extract($options);
[580] Fix | Delete
[581] Fix | Delete
if (mb_strlen($text) <= $length) {
[582] Fix | Delete
return $text;
[583] Fix | Delete
}
[584] Fix | Delete
[585] Fix | Delete
$truncate = mb_substr($text, mb_strlen($text) - $length + mb_strlen($ellipsis));
[586] Fix | Delete
if (!$exact) {
[587] Fix | Delete
$spacepos = mb_strpos($truncate, ' ');
[588] Fix | Delete
$truncate = $spacepos === false ? '' : trim(mb_substr($truncate, $spacepos));
[589] Fix | Delete
}
[590] Fix | Delete
[591] Fix | Delete
return $ellipsis . $truncate;
[592] Fix | Delete
}
[593] Fix | Delete
[594] Fix | Delete
/**
[595] Fix | Delete
* Truncates text.
[596] Fix | Delete
*
[597] Fix | Delete
* Cuts a string to the length of $length and replaces the last characters
[598] Fix | Delete
* with the ellipsis if the text is longer than length.
[599] Fix | Delete
*
[600] Fix | Delete
* ### Options:
[601] Fix | Delete
*
[602] Fix | Delete
* - `ellipsis` Will be used as ending and appended to the trimmed string
[603] Fix | Delete
* - `exact` If false, $text will not be cut mid-word
[604] Fix | Delete
* - `html` If true, HTML tags would be handled correctly
[605] Fix | Delete
* - `trimWidth` If true, $text will be truncated with the width
[606] Fix | Delete
*
[607] Fix | Delete
* @param string $text String to truncate.
[608] Fix | Delete
* @param int $length Length of returned string, including ellipsis.
[609] Fix | Delete
* @param array $options An array of HTML attributes and options.
[610] Fix | Delete
* @return string Trimmed string.
[611] Fix | Delete
* @link https://book.cakephp.org/3/en/core-libraries/text.html#truncating-text
[612] Fix | Delete
*/
[613] Fix | Delete
public static function truncate($text, $length = 100, array $options = [])
[614] Fix | Delete
{
[615] Fix | Delete
$default = [
[616] Fix | Delete
'ellipsis' => '...', 'exact' => true, 'html' => false, 'trimWidth' => false,
[617] Fix | Delete
];
[618] Fix | Delete
if (!empty($options['html']) && strtolower(mb_internal_encoding()) === 'utf-8') {
[619] Fix | Delete
$default['ellipsis'] = "\xe2\x80\xa6";
[620] Fix | Delete
}
[621] Fix | Delete
$options += $default;
[622] Fix | Delete
[623] Fix | Delete
$prefix = '';
[624] Fix | Delete
$suffix = $options['ellipsis'];
[625] Fix | Delete
[626] Fix | Delete
if ($options['html']) {
[627] Fix | Delete
$ellipsisLength = self::_strlen(strip_tags($options['ellipsis']), $options);
[628] Fix | Delete
[629] Fix | Delete
$truncateLength = 0;
[630] Fix | Delete
$totalLength = 0;
[631] Fix | Delete
$openTags = [];
[632] Fix | Delete
$truncate = '';
[633] Fix | Delete
[634] Fix | Delete
preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $text, $tags, PREG_SET_ORDER);
[635] Fix | Delete
foreach ($tags as $tag) {
[636] Fix | Delete
$contentLength = 0;
[637] Fix | Delete
if (!in_array($tag[2], static::$_defaultHtmlNoCount, true)) {
[638] Fix | Delete
$contentLength = self::_strlen($tag[3], $options);
[639] Fix | Delete
}
[640] Fix | Delete
[641] Fix | Delete
if ($truncate === '') {
[642] Fix | Delete
if (!preg_match('/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/i', $tag[2])) {
[643] Fix | Delete
if (preg_match('/<[\w]+[^>]*>/', $tag[0])) {
[644] Fix | Delete
array_unshift($openTags, $tag[2]);
[645] Fix | Delete
} elseif (preg_match('/<\/([\w]+)[^>]*>/', $tag[0], $closeTag)) {
[646] Fix | Delete
$pos = array_search($closeTag[1], $openTags, true);
[647] Fix | Delete
if ($pos !== false) {
[648] Fix | Delete
array_splice($openTags, $pos, 1);
[649] Fix | Delete
}
[650] Fix | Delete
}
[651] Fix | Delete
}
[652] Fix | Delete
[653] Fix | Delete
$prefix .= $tag[1];
[654] Fix | Delete
[655] Fix | Delete
if ($totalLength + $contentLength + $ellipsisLength > $length) {
[656] Fix | Delete
$truncate = $tag[3];
[657] Fix | Delete
$truncateLength = $length - $totalLength;
[658] Fix | Delete
} else {
[659] Fix | Delete
$prefix .= $tag[3];
[660] Fix | Delete
}
[661] Fix | Delete
}
[662] Fix | Delete
[663] Fix | Delete
$totalLength += $contentLength;
[664] Fix | Delete
if ($totalLength > $length) {
[665] Fix | Delete
break;
[666] Fix | Delete
}
[667] Fix | Delete
}
[668] Fix | Delete
[669] Fix | Delete
if ($totalLength <= $length) {
[670] Fix | Delete
return $text;
[671] Fix | Delete
}
[672] Fix | Delete
[673] Fix | Delete
$text = $truncate;
[674] Fix | Delete
$length = $truncateLength;
[675] Fix | Delete
[676] Fix | Delete
foreach ($openTags as $tag) {
[677] Fix | Delete
$suffix .= '</' . $tag . '>';
[678] Fix | Delete
}
[679] Fix | Delete
} else {
[680] Fix | Delete
if (self::_strlen($text, $options) <= $length) {
[681] Fix | Delete
return $text;
[682] Fix | Delete
}
[683] Fix | Delete
$ellipsisLength = self::_strlen($options['ellipsis'], $options);
[684] Fix | Delete
}
[685] Fix | Delete
[686] Fix | Delete
$result = self::_substr($text, 0, $length - $ellipsisLength, $options);
[687] Fix | Delete
[688] Fix | Delete
if (!$options['exact']) {
[689] Fix | Delete
if (self::_substr($text, $length - $ellipsisLength, 1, $options) !== ' ') {
[690] Fix | Delete
$result = self::_removeLastWord($result);
[691] Fix | Delete
}
[692] Fix | Delete
[693] Fix | Delete
// If result is empty, then we don't need to count ellipsis in the cut.
[694] Fix | Delete
if (!strlen($result)) {
[695] Fix | Delete
$result = self::_substr($text, 0, $length, $options);
[696] Fix | Delete
}
[697] Fix | Delete
}
[698] Fix | Delete
[699] Fix | Delete
return $prefix . $result . $suffix;
[700] Fix | Delete
}
[701] Fix | Delete
[702] Fix | Delete
/**
[703] Fix | Delete
* Truncate text with specified width.
[704] Fix | Delete
*
[705] Fix | Delete
* @param string $text String to truncate.
[706] Fix | Delete
* @param int $length Length of returned string, including ellipsis.
[707] Fix | Delete
* @param array $options An array of HTML attributes and options.
[708] Fix | Delete
* @return string Trimmed string.
[709] Fix | Delete
* @see \Cake\Utility\Text::truncate()
[710] Fix | Delete
*/
[711] Fix | Delete
public static function truncateByWidth($text, $length = 100, array $options = [])
[712] Fix | Delete
{
[713] Fix | Delete
return static::truncate($text, $length, ['trimWidth' => true] + $options);
[714] Fix | Delete
}
[715] Fix | Delete
[716] Fix | Delete
/**
[717] Fix | Delete
* Get string length.
[718] Fix | Delete
*
[719] Fix | Delete
* ### Options:
[720] Fix | Delete
*
[721] Fix | Delete
* - `html` If true, HTML entities will be handled as decoded characters.
[722] Fix | Delete
* - `trimWidth` If true, the width will return.
[723] Fix | Delete
*
[724] Fix | Delete
* @param string $text The string being checked for length
[725] Fix | Delete
* @param array $options An array of options.
[726] Fix | Delete
* @return int
[727] Fix | Delete
*/
[728] Fix | Delete
protected static function _strlen($text, array $options)
[729] Fix | Delete
{
[730] Fix | Delete
if (empty($options['trimWidth'])) {
[731] Fix | Delete
$strlen = 'mb_strlen';
[732] Fix | Delete
} else {
[733] Fix | Delete
$strlen = 'mb_strwidth';
[734] Fix | Delete
}
[735] Fix | Delete
[736] Fix | Delete
if (empty($options['html'])) {
[737] Fix | Delete
return $strlen($text);
[738] Fix | Delete
}
[739] Fix | Delete
[740] Fix | Delete
$pattern = '/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i';
[741] Fix | Delete
$replace = preg_replace_callback(
[742] Fix | Delete
$pattern,
[743] Fix | Delete
function ($match) use ($strlen) {
[744] Fix | Delete
$utf8 = html_entity_decode($match[0], ENT_HTML5 | ENT_QUOTES, 'UTF-8');
[745] Fix | Delete
[746] Fix | Delete
return str_repeat(' ', $strlen($utf8, 'UTF-8'));
[747] Fix | Delete
},
[748] Fix | Delete
$text
[749] Fix | Delete
);
[750] Fix | Delete
[751] Fix | Delete
return $strlen($replace);
[752] Fix | Delete
}
[753] Fix | Delete
[754] Fix | Delete
/**
[755] Fix | Delete
* Return part of a string.
[756] Fix | Delete
*
[757] Fix | Delete
* ### Options:
[758] Fix | Delete
*
[759] Fix | Delete
* - `html` If true, HTML entities will be handled as decoded characters.
[760] Fix | Delete
* - `trimWidth` If true, will be truncated with specified width.
[761] Fix | Delete
*
[762] Fix | Delete
* @param string $text The input string.
[763] Fix | Delete
* @param int $start The position to begin extracting.
[764] Fix | Delete
* @param int $length The desired length.
[765] Fix | Delete
* @param array $options An array of options.
[766] Fix | Delete
* @return string
[767] Fix | Delete
*/
[768] Fix | Delete
protected static function _substr($text, $start, $length, array $options)
[769] Fix | Delete
{
[770] Fix | Delete
if (empty($options['trimWidth'])) {
[771] Fix | Delete
$substr = 'mb_substr';
[772] Fix | Delete
} else {
[773] Fix | Delete
$substr = 'mb_strimwidth';
[774] Fix | Delete
}
[775] Fix | Delete
[776] Fix | Delete
$maxPosition = self::_strlen($text, ['trimWidth' => false] + $options);
[777] Fix | Delete
if ($start < 0) {
[778] Fix | Delete
$start += $maxPosition;
[779] Fix | Delete
if ($start < 0) {
[780] Fix | Delete
$start = 0;
[781] Fix | Delete
}
[782] Fix | Delete
}
[783] Fix | Delete
if ($start >= $maxPosition) {
[784] Fix | Delete
return '';
[785] Fix | Delete
}
[786] Fix | Delete
[787] Fix | Delete
if ($length === null) {
[788] Fix | Delete
$length = self::_strlen($text, $options);
[789] Fix | Delete
}
[790] Fix | Delete
[791] Fix | Delete
if ($length < 0) {
[792] Fix | Delete
$text = self::_substr($text, $start, null, $options);
[793] Fix | Delete
$start = 0;
[794] Fix | Delete
$length += self::_strlen($text, $options);
[795] Fix | Delete
}
[796] Fix | Delete
[797] Fix | Delete
if ($length <= 0) {
[798] Fix | Delete
return '';
[799] Fix | Delete
}
[800] Fix | Delete
[801] Fix | Delete
if (empty($options['html'])) {
[802] Fix | Delete
return (string)$substr($text, $start, $length);
[803] Fix | Delete
}
[804] Fix | Delete
[805] Fix | Delete
$totalOffset = 0;
[806] Fix | Delete
$totalLength = 0;
[807] Fix | Delete
$result = '';
[808] Fix | Delete
[809] Fix | Delete
$pattern = '/(&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};)/i';
[810] Fix | Delete
$parts = preg_split($pattern, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
[811] Fix | Delete
foreach ($parts as $part) {
[812] Fix | Delete
$offset = 0;
[813] Fix | Delete
[814] Fix | Delete
if ($totalOffset < $start) {
[815] Fix | Delete
$len = self::_strlen($part, ['trimWidth' => false] + $options);
[816] Fix | Delete
if ($totalOffset + $len <= $start) {
[817] Fix | Delete
$totalOffset += $len;
[818] Fix | Delete
continue;
[819] Fix | Delete
}
[820] Fix | Delete
[821] Fix | Delete
$offset = $start - $totalOffset;
[822] Fix | Delete
$totalOffset = $start;
[823] Fix | Delete
}
[824] Fix | Delete
[825] Fix | Delete
$len = self::_strlen($part, $options);
[826] Fix | Delete
if ($offset !== 0 || $totalLength + $len > $length) {
[827] Fix | Delete
if (
[828] Fix | Delete
strpos($part, '&') === 0 && preg_match($pattern, $part)
[829] Fix | Delete
&& $part !== html_entity_decode($part, ENT_HTML5 | ENT_QUOTES, 'UTF-8')
[830] Fix | Delete
) {
[831] Fix | Delete
// Entities cannot be passed substr.
[832] Fix | Delete
continue;
[833] Fix | Delete
}
[834] Fix | Delete
[835] Fix | Delete
$part = $substr($part, $offset, $length - $totalLength);
[836] Fix | Delete
$len = self::_strlen($part, $options);
[837] Fix | Delete
}
[838] Fix | Delete
[839] Fix | Delete
$result .= $part;
[840] Fix | Delete
$totalLength += $len;
[841] Fix | Delete
if ($totalLength >= $length) {
[842] Fix | Delete
break;
[843] Fix | Delete
}
[844] Fix | Delete
}
[845] Fix | Delete
[846] Fix | Delete
return $result;
[847] Fix | Delete
}
[848] Fix | Delete
[849] Fix | Delete
/**
[850] Fix | Delete
* Removes the last word from the input text.
[851] Fix | Delete
*
[852] Fix | Delete
* @param string $text The input text
[853] Fix | Delete
* @return string
[854] Fix | Delete
*/
[855] Fix | Delete
protected static function _removeLastWord($text)
[856] Fix | Delete
{
[857] Fix | Delete
$spacepos = mb_strrpos($text, ' ');
[858] Fix | Delete
[859] Fix | Delete
if ($spacepos !== false) {
[860] Fix | Delete
$lastWord = mb_strrpos($text, $spacepos);
[861] Fix | Delete
[862] Fix | Delete
// Some languages are written without word separation.
[863] Fix | Delete
// We recognize a string as a word if it doesn't contain any full-width characters.
[864] Fix | Delete
if (mb_strwidth($lastWord) === mb_strlen($lastWord)) {
[865] Fix | Delete
$text = mb_substr($text, 0, $spacepos);
[866] Fix | Delete
}
[867] Fix | Delete
[868] Fix | Delete
return $text;
[869] Fix | Delete
}
[870] Fix | Delete
[871] Fix | Delete
return '';
[872] Fix | Delete
}
[873] Fix | Delete
[874] Fix | Delete
/**
[875] Fix | Delete
* Extracts an excerpt from the text surrounding the phrase with a number of characters on each side
[876] Fix | Delete
* determined by radius.
[877] Fix | Delete
*
[878] Fix | Delete
* @param string $text String to search the phrase in
[879] Fix | Delete
* @param string $phrase Phrase that will be searched for
[880] Fix | Delete
* @param int $radius The amount of characters that will be returned on each side of the founded phrase
[881] Fix | Delete
* @param string $ellipsis Ending that will be appended
[882] Fix | Delete
* @return string Modified string
[883] Fix | Delete
* @link https://book.cakephp.org/3/en/core-libraries/text.html#extracting-an-excerpt
[884] Fix | Delete
*/
[885] Fix | Delete
public static function excerpt($text, $phrase, $radius = 100, $ellipsis = '...')
[886] Fix | Delete
{
[887] Fix | Delete
if (empty($text) || empty($phrase)) {
[888] Fix | Delete
return static::truncate($text, $radius * 2, ['ellipsis' => $ellipsis]);
[889] Fix | Delete
}
[890] Fix | Delete
[891] Fix | Delete
$append = $prepend = $ellipsis;
[892] Fix | Delete
[893] Fix | Delete
$phraseLen = mb_strlen($phrase);
[894] Fix | Delete
$textLen = mb_strlen($text);
[895] Fix | Delete
[896] Fix | Delete
$pos = mb_stripos($text, $phrase);
[897] Fix | Delete
if ($pos === false) {
[898] Fix | Delete
return mb_substr($text, 0, $radius) . $ellipsis;
[899] Fix | Delete
}
[900] Fix | Delete
[901] Fix | Delete
$startPos = $pos - $radius;
[902] Fix | Delete
if ($startPos <= 0) {
[903] Fix | Delete
$startPos = 0;
[904] Fix | Delete
$prepend = '';
[905] Fix | Delete
}
[906] Fix | Delete
[907] Fix | Delete
$endPos = $pos + $phraseLen + $radius;
[908] Fix | Delete
if ($endPos >= $textLen) {
[909] Fix | Delete
$endPos = $textLen;
[910] Fix | Delete
$append = '';
[911] Fix | Delete
}
[912] Fix | Delete
[913] Fix | Delete
$excerpt = mb_substr($text, $startPos, $endPos - $startPos);
[914] Fix | Delete
$excerpt = $prepend . $excerpt . $append;
[915] Fix | Delete
[916] Fix | Delete
return $excerpt;
[917] Fix | Delete
}
[918] Fix | Delete
[919] Fix | Delete
/**
[920] Fix | Delete
* Creates a comma separated list where the last two items are joined with 'and', forming natural language.
[921] Fix | Delete
*
[922] Fix | Delete
* @param string[] $list The list to be joined.
[923] Fix | Delete
* @param string|null $and The word used to join the last and second last items together with. Defaults to 'and'.
[924] Fix | Delete
* @param string $separator The separator used to join all the other items together. Defaults to ', '.
[925] Fix | Delete
* @return string The glued together string.
[926] Fix | Delete
* @link https://book.cakephp.org/3/en/core-libraries/text.html#converting-an-array-to-sentence-form
[927] Fix | Delete
*/
[928] Fix | Delete
public static function toList(array $list, $and = null, $separator = ', ')
[929] Fix | Delete
{
[930] Fix | Delete
if ($and === null) {
[931] Fix | Delete
$and = __d('cake', 'and');
[932] Fix | Delete
}
[933] Fix | Delete
if (count($list) > 1) {
[934] Fix | Delete
return implode($separator, array_slice($list, null, -1)) . ' ' . $and . ' ' . array_pop($list);
[935] Fix | Delete
}
[936] Fix | Delete
[937] Fix | Delete
return (string)array_pop($list);
[938] Fix | Delete
}
[939] Fix | Delete
[940] Fix | Delete
/**
[941] Fix | Delete
* Check if the string contain multibyte characters
[942] Fix | Delete
*
[943] Fix | Delete
* @param string $string value to test
[944] Fix | Delete
* @return bool
[945] Fix | Delete
*/
[946] Fix | Delete
public static function isMultibyte($string)
[947] Fix | Delete
{
[948] Fix | Delete
$length = strlen($string);
[949] Fix | Delete
[950] Fix | Delete
for ($i = 0; $i < $length; $i++) {
[951] Fix | Delete
$value = ord($string[$i]);
[952] Fix | Delete
if ($value > 128) {
[953] Fix | Delete
return true;
[954] Fix | Delete
}
[955] Fix | Delete
}
[956] Fix | Delete
[957] Fix | Delete
return false;
[958] Fix | Delete
}
[959] Fix | Delete
[960] Fix | Delete
/**
[961] Fix | Delete
* Converts a multibyte character string
[962] Fix | Delete
* to the decimal value of the character
[963] Fix | Delete
*
[964] Fix | Delete
* @param string $string String to convert.
[965] Fix | Delete
* @return array
[966] Fix | Delete
*/
[967] Fix | Delete
public static function utf8($string)
[968] Fix | Delete
{
[969] Fix | Delete
$map = [];
[970] Fix | Delete
[971] Fix | Delete
$values = [];
[972] Fix | Delete
$find = 1;
[973] Fix | Delete
$length = strlen($string);
[974] Fix | Delete
[975] Fix | Delete
for ($i = 0; $i < $length; $i++) {
[976] Fix | Delete
$value = ord($string[$i]);
[977] Fix | Delete
[978] Fix | Delete
if ($value < 128) {
[979] Fix | Delete
$map[] = $value;
[980] Fix | Delete
} else {
[981] Fix | Delete
if (empty($values)) {
[982] Fix | Delete
$find = ($value < 224) ? 2 : 3;
[983] Fix | Delete
}
[984] Fix | Delete
$values[] = $value;
[985] Fix | Delete
[986] Fix | Delete
if (count($values) === $find) {
[987] Fix | Delete
if ($find === 3) {
[988] Fix | Delete
$map[] = (($values[0] % 16) * 4096) + (($values[1] % 64) * 64) + ($values[2] % 64);
[989] Fix | Delete
} else {
[990] Fix | Delete
$map[] = (($values[0] % 32) * 64) + ($values[1] % 64);
[991] Fix | Delete
}
[992] Fix | Delete
$values = [];
[993] Fix | Delete
$find = 1;
[994] Fix | Delete
}
[995] Fix | Delete
}
[996] Fix | Delete
}
[997] Fix | Delete
[998] Fix | Delete
return $map;
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function