]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Text/Plaintext.php
Add Trending Tags widget + template
[friendica.git] / src / Content / Text / Plaintext.php
index eb17fd0a26da262cbef3afff8f2d0228773770a0..2ec76ba13b4d9ba1a7571d7d6b01a1274eac7144 100644 (file)
@@ -9,9 +9,9 @@ class Plaintext
        /**
         * Shortens message
         *
-        * @param type $msg
-        * @param type $limit
-        * @return type
+        * @param  string $msg
+        * @param  int    $limit
+        * @return string
         *
         * @todo For Twitter URLs aren't shortened, but they have to be calculated as if.
         */
@@ -34,4 +34,41 @@ class Plaintext
 
                return $msg;
        }
+
+       /**
+        * Returns the character positions of the provided boundaries, optionally skipping a number of first occurrences
+        *
+        * @param string $text        Text to search
+        * @param string $open        Left boundary
+        * @param string $close       Right boundary
+        * @param int    $occurrences Number of first occurrences to skip
+        * @return boolean|array
+        */
+       public static function getBoundariesPosition($text, $open, $close, $occurrences = 0)
+       {
+               if ($occurrences < 0) {
+                       $occurrences = 0;
+               }
+
+               $start_pos = -1;
+               for ($i = 0; $i <= $occurrences; $i++) {
+                       if ($start_pos !== false) {
+                               $start_pos = strpos($text, $open, $start_pos + 1);
+                       }
+               }
+
+               if ($start_pos === false) {
+                       return false;
+               }
+
+               $end_pos = strpos($text, $close, $start_pos);
+
+               if ($end_pos === false) {
+                       return false;
+               }
+
+               $res = ['start' => $start_pos, 'end' => $end_pos];
+
+               return $res;
+       }
 }