JBZoo\Utils\Url::_linkifyRegex PHP Method

_linkifyRegex() protected static method

Part of the LinkifyURL Project
protected static _linkifyRegex ( string $text ) : mixed
$text string Matches from the preg_ function
return mixed
    protected static function _linkifyRegex($text)
    {
        $urlPattern = '/                                            # Rev:20100913_0900 github.com\\/jmrware\\/LinkifyURL
                                                                    # Match http & ftp URL that is not already linkified
                                                                    # Alternative 1: URL delimited by (parentheses).
            (\\()                                                    # $1 "(" start delimiter.
            ((?:ht|f)tps?:\\/\\/[a-z0-9\\-._~!$&\'()*+,;=:\\/?#[\\]@%]+) # $2: URL.
            (\\))                                                    # $3: ")" end delimiter.
            |                                                       # Alternative 2: URL delimited by [square brackets].
            (\\[)                                                    # $4: "[" start delimiter.
            ((?:ht|f)tps?:\\/\\/[a-z0-9\\-._~!$&\'()*+,;=:\\/?#[\\]@%]+) # $5: URL.
            (\\])                                                    # $6: "]" end delimiter.
            |                                                       # Alternative 3: URL delimited by {curly braces}.
            (\\{)                                                    # $7: "{" start delimiter.
            ((?:ht|f)tps?:\\/\\/[a-z0-9\\-._~!$&\'()*+,;=:\\/?#[\\]@%]+) # $8: URL.
            (\\})                                                    # $9: "}" end delimiter.
            |                                                       # Alternative 4: URL delimited by <angle brackets>.
            (<|&(?:lt|\\#60|\\#x3c);)                                 # $10: "<" start delimiter (or HTML entity).
            ((?:ht|f)tps?:\\/\\/[a-z0-9\\-._~!$&\'()*+,;=:\\/?#[\\]@%]+) # $11: URL.
            (>|&(?:gt|\\#62|\\#x3e);)                                 # $12: ">" end delimiter (or HTML entity).
            |                                                       # Alt. 5: URL not delimited by (), [], {} or <>.
            (                                                       # $13: Prefix proving URL not already linked.
            (?: ^                                                   # Can be a beginning of line or string, or
             | [^=\\s\'"\\]]                                          # a non-"=", non-quote, non-"]", followed by
            ) \\s*[\'"]?                                             # optional whitespace and optional quote;
              | [^=\\s]\\s+                                           # or... a non-equals sign followed by whitespace.
            )                                                       # End $13. Non-prelinkified-proof prefix.
            (\\b                                                     # $14: Other non-delimited URL.
            (?:ht|f)tps?:\\/\\/                                       # Required literal http, https, ftp or ftps prefix.
            [a-z0-9\\-._~!$\'()*+,;=:\\/?#[\\]@%]+                     # All URI chars except "&" (normal*).
            (?:                                                     # Either on a "&" or at the end of URI.
            (?!                                                     # Allow a "&" char only if not start of an...
            &(?:gt|\\#0*62|\\#x0*3e);                                 # HTML ">" entity, or
            | &(?:amp|apos|quot|\\#0*3[49]|\\#x0*2[27]);              # a [&\'"] entity if
            [.!&\',:?;]?                                            # followed by optional punctuation then
            (?:[^a-z0-9\\-._~!$&\'()*+,;=:\\/?#[\\]@%]|$)              # a non-URI char or EOS.
           ) &                                                      # If neg-assertion true, match "&" (special).
            [a-z0-9\\-._~!$\'()*+,;=:\\/?#[\\]@%]*                     # More non-& URI chars (normal*).
           )*                                                       # Unroll-the-loop (special normal*)*.
            [a-z0-9\\-_~$()*+=\\/#[\\]@%]                              # Last char can\'t be [.!&\',;:?]
           )                                                        # End $14. Other non-delimited URL.
            /imx';
        $urlReplace = '$1$4$7$10$13<a href="$2$5$8$11$14">$2$5$8$11$14</a>$3$6$9$12';
        return preg_replace($urlPattern, $urlReplace, $text);
    }