]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Strings.php
Merge pull request #6132 from annando/notice
[friendica.git] / src / Util / Strings.php
index 3febe60bd8b4139a29927a5564a49ca2b4b53df2..48e580d67892587ab648f2f0960c8a5193094caf 100644 (file)
@@ -5,6 +5,9 @@
 
 namespace Friendica\Util;
 
+use Friendica\Content\ContactSelector;
+use Friendica\Core\Logger;
+
 /**
  * @brief This class handles string functions
  */
@@ -28,14 +31,7 @@ class Strings
     }
 
     /**
-     * This is our primary input filter.
-     *
-     * The high bit hack only involved some old IE browser, forget which (IE5/Mac?)
-     * that had an XSS attack vector due to stripping the high-bit on an 8-bit character
-     * after cleansing, and angle chars with the high bit set could get through as markup.
-     *
-     * This is now disabled because it was interfering with some legitimate unicode sequences
-     * and hopefully there aren't a lot of those browsers left.
+     * @brief This is our primary input filter.
      *
      * Use this on any text input where angle chars are not valid or permitted
      * They will be replaced with safer brackets. This may be filtered further
@@ -44,7 +40,7 @@ class Strings
      * @param string $string Input string
      * @return string Filtered string
      */
-    public static function removeTags($string)
+    public static function escapeTags($string)
     {
         return str_replace(["<", ">"], ['[', ']'], $string);
     }
@@ -56,7 +52,7 @@ class Strings
      * 
      * @return string
      */
-    public static function escapeTags($string)
+    public static function escapeHtml($string)
     {
         return htmlspecialchars($string, ENT_COMPAT, 'UTF-8', false);
     }
@@ -155,7 +151,7 @@ class Strings
     {
         if ($network != "") {
             if ($url != "") {
-                $network_name = '<a href="'.$url.'">'.ContactSelector::networkToName($network, $url)."</a>";
+                $network_name = '<a href="' . $url  .'">' . ContactSelector::networkToName($network, $url) . "</a>";
             } else {
                 $network_name = ContactSelector::networkToName($network);
             }
@@ -276,92 +272,6 @@ class Strings
         return base64_decode(strtr($s, '-_', '+/'));
     }
 
-    /**
-     * @brief Pull out all #hashtags and @person tags from $string.
-     *
-     * We also get @person@domain.com - which would make
-     * the regex quite complicated as tags can also
-     * end a sentence. So we'll run through our results
-     * and strip the period from any tags which end with one.
-     * Returns array of tags found, or empty array.
-     *
-     * @param string $string Post content
-     * 
-     * @return array List of tag and person names
-     */
-    public static function getTags($string)
-    {
-        $ret = [];
-
-        // Convert hashtag links to hashtags
-        $string = preg_replace('/#\[url\=([^\[\]]*)\](.*?)\[\/url\]/ism', '#$2', $string);
-
-        // ignore anything in a code block
-        $string = preg_replace('/\[code\](.*?)\[\/code\]/sm', '', $string);
-
-        // Force line feeds at bbtags
-        $string = str_replace(['[', ']'], ["\n[", "]\n"], $string);
-
-        // ignore anything in a bbtag
-        $string = preg_replace('/\[(.*?)\]/sm', '', $string);
-
-        // Match full names against @tags including the space between first and last
-        // We will look these up afterward to see if they are full names or not recognisable.
-
-        if (preg_match_all('/(@[^ \x0D\x0A,:?]+ [^ \x0D\x0A@,:?]+)([ \x0D\x0A@,:?]|$)/', $string, $matches)) {
-            foreach ($matches[1] as $match) {
-                if (strstr($match, ']')) {
-                    // we might be inside a bbcode color tag - leave it alone
-                    continue;
-                }
-
-                if (substr($match, -1, 1) === '.') {
-                    $ret[] = substr($match, 0, -1);
-                } else {
-                    $ret[] = $match;
-                }
-            }
-        }
-
-        // Otherwise pull out single word tags. These can be @nickname, @first_last
-        // and #hash tags.
-
-        if (preg_match_all('/([!#@][^\^ \x0D\x0A,;:?]+)([ \x0D\x0A,;:?]|$)/', $string, $matches)) {
-            foreach ($matches[1] as $match) {
-                if (strstr($match, ']')) {
-                    // we might be inside a bbcode color tag - leave it alone
-                    continue;
-                }
-                if (substr($match, -1, 1) === '.') {
-                    $match = substr($match,0,-1);
-                }
-                // ignore strictly numeric tags like #1
-                if ((strpos($match, '#') === 0) && ctype_digit(substr($match, 1))) {
-                    continue;
-                }
-                // try not to catch url fragments
-                if (strpos($string, $match) && preg_match('/[a-zA-z0-9\/]/', substr($string, strpos($string, $match) - 1, 1))) {
-                    continue;
-                }
-                $ret[] = $match;
-            }
-        }
-
-        return $ret;
-    }
-
-    /**
-     * @brief Check for a valid email string
-     *
-     * @param string $email_address Email address to be evaluated.
-     * 
-     * @return boolean  Value indicating whether or not the string is a valid email address.
-     */
-    public static function isValidEmail($email_address)
-    {
-        return preg_match('/^[_a-zA-Z0-9\-\+]+(\.[_a-zA-Z0-9\-\+]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/', $email_address);
-    }
-
     /**
      * @brief Normalize url
      *
@@ -369,7 +279,7 @@ class Strings
      * 
      * @return string   Normalized URL.
      */
-    public static function normaliseLink($url) // normalise_link()
+    public static function normaliseLink($url)
     {
         $ret = str_replace(['https:', '//www.'], ['http:', '//'], $url);
         return rtrim($ret, '/');