aboutsummaryrefslogtreecommitdiffhomepage
path: root/application/Utils.php
diff options
context:
space:
mode:
authornodiscc <nodiscc@gmail.com>2015-06-23 14:38:43 +0200
committernodiscc <nodiscc@gmail.com>2015-06-23 14:38:43 +0200
commit38a0c256d200df872990f6ed450aceaf215eeafd (patch)
treef6db984281ca44e6f9c763d78eb990b32be07b25 /application/Utils.php
parent0fe36414c86e8417974d847f8d6d28c90def9ccc (diff)
parentca74886f30da323f42aa4bd70461003f46ef299b (diff)
downloadShaarli-38a0c256d200df872990f6ed450aceaf215eeafd.tar.gz
Shaarli-38a0c256d200df872990f6ed450aceaf215eeafd.tar.zst
Shaarli-38a0c256d200df872990f6ed450aceaf215eeafd.zip
Merge remote-tracking branch 'virtualtam/test/link-db' into next
Conflicts: index.php
Diffstat (limited to 'application/Utils.php')
-rw-r--r--application/Utils.php45
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 */
18function 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 */
27function 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 */
38function 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?>