summaryrefslogtreecommitdiffstats
path: root/management-interface/lib/utf.php
diff options
context:
space:
mode:
Diffstat (limited to 'management-interface/lib/utf.php')
-rw-r--r--management-interface/lib/utf.php192
1 files changed, 192 insertions, 0 deletions
diff --git a/management-interface/lib/utf.php b/management-interface/lib/utf.php
new file mode 100644
index 0000000..63dcb3a
--- /dev/null
+++ b/management-interface/lib/utf.php
@@ -0,0 +1,192 @@
+<?php
+
+/*
+ Copyright (c) 2009-2014 F3::Factory/Bong Cosca, All rights reserved.
+
+ This file is part of the Fat-Free Framework (http://fatfree.sf.net).
+
+ THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF
+ ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
+ PURPOSE.
+
+ Please see the license.txt file for more information.
+*/
+
+//! Unicode string manager
+class UTF extends Prefab {
+
+ /**
+ * Get string length
+ * @return int
+ * @param $str string
+ **/
+ function strlen($str) {
+ preg_match_all('/./us',$str,$parts);
+ return count($parts[0]);
+ }
+
+ /**
+ * Reverse a string
+ * @return string
+ * @param $str string
+ **/
+ function strrev($str) {
+ preg_match_all('/./us',$str,$parts);
+ return implode('',array_reverse($parts[0]));
+ }
+
+ /**
+ * Find position of first occurrence of a string (case-insensitive)
+ * @return int|FALSE
+ * @param $stack string
+ * @param $needle string
+ * @param $ofs int
+ **/
+ function stripos($stack,$needle,$ofs=0) {
+ return $this->strpos($stack,$needle,$ofs,TRUE);
+ }
+
+ /**
+ * Find position of first occurrence of a string
+ * @return int|FALSE
+ * @param $stack string
+ * @param $needle string
+ * @param $ofs int
+ * @param $case bool
+ **/
+ function strpos($stack,$needle,$ofs=0,$case=FALSE) {
+ return preg_match('/^(.{'.$ofs.'}.*?)'.
+ preg_quote($needle,'/').'/us'.($case?'i':''),$stack,$match)?
+ $this->strlen($match[1]):FALSE;
+ }
+
+ /**
+ * Returns part of haystack string from the first occurrence of
+ * needle to the end of haystack (case-insensitive)
+ * @return string|FALSE
+ * @param $stack string
+ * @param $needle string
+ * @param $before bool
+ **/
+ function stristr($stack,$needle,$before=FALSE) {
+ return $this->strstr($stack,$needle,$before,TRUE);
+ }
+
+ /**
+ * Returns part of haystack string from the first occurrence of
+ * needle to the end of haystack
+ * @return string|FALSE
+ * @param $stack string
+ * @param $needle string
+ * @param $before bool
+ * @param $case bool
+ **/
+ function strstr($stack,$needle,$before=FALSE,$case=FALSE) {
+ if (!$needle)
+ return FALSE;
+ preg_match('/^(.*?)'.preg_quote($needle,'/').'/us'.($case?'i':''),
+ $stack,$match);
+ return isset($match[1])?
+ ($before?
+ $match[1]:
+ $this->substr($stack,$this->strlen($match[1]))):
+ FALSE;
+ }
+
+ /**
+ * Return part of a string
+ * @return string|FALSE
+ * @param $str string
+ * @param $start int
+ * @param $len int
+ **/
+ function substr($str,$start,$len=0) {
+ if ($start<0)
+ $start=$this->strlen($str)+$start;
+ if (!$len)
+ $len=$this->strlen($str)-$start;
+ return preg_match('/^.{'.$start.'}(.{0,'.$len.'})/us',$str,$match)?
+ $match[1]:FALSE;
+ }
+
+ /**
+ * Count the number of substring occurrences
+ * @return int
+ * @param $stack string
+ * @param $needle string
+ **/
+ function substr_count($stack,$needle) {
+ preg_match_all('/'.preg_quote($needle,'/').'/us',$stack,
+ $matches,PREG_SET_ORDER);
+ return count($matches);
+ }
+
+ /**
+ * Strip whitespaces from the beginning of a string
+ * @return string
+ * @param $str string
+ **/
+ function ltrim($str) {
+ return preg_replace('/^[\pZ\pC]+/u','',$str);
+ }
+
+ /**
+ * Strip whitespaces from the end of a string
+ * @return string
+ * @param $str string
+ **/
+ function rtrim($str) {
+ return preg_replace('/[\pZ\pC]+$/u','',$str);
+ }
+
+ /**
+ * Strip whitespaces from the beginning and end of a string
+ * @return string
+ * @param $str string
+ **/
+ function trim($str) {
+ return preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u','',$str);
+ }
+
+ /**
+ * Return UTF-8 byte order mark
+ * @return string
+ **/
+ function bom() {
+ return chr(0xef).chr(0xbb).chr(0xbf);
+ }
+
+ /**
+ * Convert code points to Unicode symbols
+ * @return string
+ * @param $str string
+ **/
+ function translate($str) {
+ return html_entity_decode(
+ preg_replace('/\\\\u([[:xdigit:]]+)/i','&#x\1;',$str));
+ }
+
+ /**
+ * Translate emoji tokens to Unicode font-supported symbols
+ * @return string
+ * @param $str string
+ **/
+ function emojify($str) {
+ $map=array(
+ ':('=>'\u2639', // frown
+ ':)'=>'\u263a', // smile
+ '<3'=>'\u2665', // heart
+ ':D'=>'\u1f603', // grin
+ 'XD'=>'\u1f606', // laugh
+ ';)'=>'\u1f609', // wink
+ ':P'=>'\u1f60b', // tongue
+ ':,'=>'\u1f60f', // think
+ ':/'=>'\u1f623', // skeptic
+ '8O'=>'\u1f632', // oops
+ )+Base::instance()->get('EMOJI');
+ return $this->translate(str_replace(array_keys($map),
+ array_values($map),$str));
+ }
+
+}