]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Strings.php
Cleanup work with the activity types
[friendica.git] / src / Util / Strings.php
index 379f2a25213dda4ed89fc8d688eb4dffb4c038f6..c5d5c760a382872631bd84ece791da33a223bed7 100644 (file)
@@ -380,29 +380,47 @@ class Strings
         * Returns the regular expression string to match URLs in a given text
         *
         * @return string
-        * @see https://daringfireball.net/2010/07/improved_regex_for_matching_urls
         */
        public static function autoLinkRegEx(): string
        {
                return '@
-(?<![=\'\]"/])                 # Not preceded by [, =, \', ], ", /
+(?<![=\'\]"/]) # Not preceded by [, =, \', ], ", /
 \b
-(                                                         # Capture 1: entire matched URL
-  https?://                                                       # http or https protocol
+(              # Capture 1: entire matched URL
+  ' . self::linkRegEx() . '
+)@xiu';
+       }
+
+       /**
+        * Returns the regular expression string to match only an HTTP URL
+        *
+        * @return string
+        */
+       public static function onlyLinkRegEx(): string
+       {
+               return '@^' . self::linkRegEx() . '$@xiu';
+       }
+
+       /**
+        * @return string
+        * @see https://daringfireball.net/2010/07/improved_regex_for_matching_urls
+        */
+       private static function linkRegEx(): string
+       {
+               return 'https?://                   # http or https protocol
   (?:
-       [^/\s\xA0`!()\[\]{};:\'",<>?«»“”‘’.]    # Domain can\'t start with a .
-       [^/\s\xA0`!()\[\]{};:\'",<>?«»“”‘’]+    # Domain can\'t end with a .
+       [^/\s\xA0`!()\[\]{};:\'",<>?«»“”‘’.]    # Domain can\'t start with a .
+       [^/\s\xA0`!()\[\]{};:\'",<>?«»“”‘’]+    # Domain can\'t end with a .
        \.
        [^/\s\xA0`!()\[\]{};:\'".,<>?«»“”‘’]+/? # Followed by a slash
   )
-  (?:                                                             # One or more:
-       [^\s\xA0()<>]+                                             # Run of non-space, non-()<>
-       |                                                                  #   or
-       \(([^\s\xA0()<>]+|(\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
-       |                                                                  #   or
-       [^\s\xA0`!()\[\]{};:\'".,<>?«»“”‘’]    # not a space or one of these punct chars
-  )*
-)@xiu';
+  (?:                                       # One or more:
+       [^\s\xA0()<>]+                            # Run of non-space, non-()<>
+       |                                         #   or
+       \(([^\s\xA0()<>]+|(\([^\s()<>]+\)))*\)    # balanced parens, up to 2 levels
+       |                                                                         #   or
+       [^\s\xA0`!()\[\]{};:\'".,<>?«»“”‘’]         # not a space or one of these punct chars
+  )*';
        }
 
        /**