X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FStrings.php;h=d6583b9c61c0eb29993ee350d2eb2683e3592c3a;hb=0c738c4f8bd820519a4b46b27f419dbc921721f5;hp=48e580d67892587ab648f2f0960c8a5193094caf;hpb=d4a02dc31408210ab9f67ecac1948dc22b95b8da;p=friendica.git
diff --git a/src/Util/Strings.php b/src/Util/Strings.php
index 48e580d678..d6583b9c61 100644
--- a/src/Util/Strings.php
+++ b/src/Util/Strings.php
@@ -13,12 +13,13 @@ use Friendica\Core\Logger;
*/
class Strings
{
- /**
- * @brief Generates a pseudo-random string of hexadecimal characters
- *
- * @param int $size
- * @return string
- */
+ /**
+ * @brief Generates a pseudo-random string of hexadecimal characters
+ *
+ * @param int $size
+ * @return string
+ * @throws \Exception
+ */
public static function getRandomHex($size = 64)
{
$byte_size = ceil($size / 2);
@@ -139,19 +140,20 @@ class Strings
return $word;
}
- /**
- * @brief translate and format the networkname of a contact
- *
- * @param string $network Networkname of the contact (e.g. dfrn, rss and so on)
- * @param string $url The contact url
- *
- * @return string Formatted network name
- */
- public static function formatNetworkName($network, $url = 0)
+ /**
+ * Translate and format the network name of a contact
+ *
+ * @param string $network Network name of the contact (e.g. dfrn, rss and so on)
+ * @param string $url The contact url
+ *
+ * @return string Formatted network name
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ */
+ public static function formatNetworkName($network, $url = '')
{
- if ($network != "") {
- if ($url != "") {
- $network_name = '' . ContactSelector::networkToName($network, $url) . "";
+ if ($network != '') {
+ if ($url != '') {
+ $network_name = '' . ContactSelector::networkToName($network, $url) . '';
} else {
$network_name = ContactSelector::networkToName($network);
}
@@ -161,7 +163,7 @@ class Strings
}
/**
- * @brief Remove intentation from a text
+ * @brief Remove indentation from a text
*
* @param string $text String to be transformed.
* @param string $chr Optional. Indentation tag. Default tab (\t).
@@ -240,12 +242,13 @@ class Strings
return $s;
}
- /**
- * @brief Decode Base64 Encoded URL and translate -_ to +/
- * @param string $s URL to decode
- *
- * @return string Decoded URL
- */
+ /**
+ * @brief Decode Base64 Encoded URL and translate -_ to +/
+ * @param string $s URL to decode
+ *
+ * @return string Decoded URL
+ * @throws \Exception
+ */
public static function base64UrlDecode($s)
{
if (is_array($s)) {
@@ -292,7 +295,7 @@ class Strings
*
* @return string normalized OpenId Identity
*/
- function normaliseOpenID($s)
+ public static function normaliseOpenID($s)
{
return trim(str_replace(['http://', 'https://'], ['', ''], $s), '/');
}
@@ -312,4 +315,64 @@ class Strings
{
return (strcasecmp(self::normaliseLink($a), self::normaliseLink($b)) === 0);
}
+
+
+ /**
+ * Ensures the provided URI has its query string punctuation in order.
+ *
+ * @param string $uri
+ * @return string
+ */
+ public static function ensureQueryParameter($uri)
+ {
+ if (strpos($uri, '?') === false && ($pos = strpos($uri, '&')) !== false) {
+ $uri = substr($uri, 0, $pos) . '?' . substr($uri, $pos + 1);
+ }
+
+ return $uri;
+ }
+
+
+ /**
+ * Check if the trimmed provided string is starting with one of the provided characters
+ *
+ * @param string $string
+ * @param array $chars
+ * @return bool
+ */
+ public static function startsWith($string, array $chars)
+ {
+ $return = in_array(substr(trim($string), 0, 1), $chars);
+
+ return $return;
+ }
+
+ /**
+ * 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()
+ {
+ return '@(?xi)
+(??«»ââââ.] # Domain can\'t start with a .
+ [^/\s`!()\[\]{};:\'",<>?«»ââââ]+ # Domain can\'t end with a .
+ \.
+ [^/\s`!()\[\]{};:\'".,<>?«»ââââ]+/? # Followed by a slash
+ )
+ (?: # One or more:
+ [^\s()<>]+ # Run of non-space, non-()<>
+ | # or
+ \(([^\s()<>]+|(\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
+ | # or
+ [^\s`!()\[\]{};:\'".,<>?«»ââââ] # not a space or one of these punct chars
+ )*
+)@';
+ }
}