diff options
Diffstat (limited to 'application/Utils.php')
-rw-r--r-- | application/Utils.php | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/application/Utils.php b/application/Utils.php new file mode 100644 index 00000000..737f1502 --- /dev/null +++ b/application/Utils.php | |||
@@ -0,0 +1,45 @@ | |||
1 | <?php | ||
2 | /** | ||
3 | * Shaarli utilities | ||
4 | */ | ||
5 | |||
6 | /** | ||
7 | * Returns the small hash of a string, using RFC 4648 base64url format | ||
8 | * | ||
9 | * Small hashes: | ||
10 | * - are unique (well, as unique as crc32, at last) | ||
11 | * - are always 6 characters long. | ||
12 | * - only use the following characters: a-z A-Z 0-9 - _ @ | ||
13 | * - are NOT cryptographically secure (they CAN be forged) | ||
14 | * | ||
15 | * In Shaarli, they are used as a tinyurl-like link to individual entries, | ||
16 | * e.g. smallHash('20111006_131924') --> yZH23w | ||
17 | */ | ||
18 | function smallHash($text) | ||
19 | { | ||
20 | $t = rtrim(base64_encode(hash('crc32', $text, true)), '='); | ||
21 | return strtr($t, '+/', '-_'); | ||
22 | } | ||
23 | |||
24 | /** | ||
25 | * Tells if a string start with a substring | ||
26 | */ | ||
27 | function startsWith($haystack, $needle, $case=true) | ||
28 | { | ||
29 | if ($case) { | ||
30 | return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0); | ||
31 | } | ||
32 | return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0); | ||
33 | } | ||
34 | |||
35 | /** | ||
36 | * Tells if a string ends with a substring | ||
37 | */ | ||
38 | function endsWith($haystack, $needle, $case=true) | ||
39 | { | ||
40 | if ($case) { | ||
41 | return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); | ||
42 | } | ||
43 | return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); | ||
44 | } | ||
45 | ?> | ||