<?php /** * Shaarli utilities */ /** * Returns the small hash of a string, using RFC 4648 base64url format * * Small hashes: * - are unique (well, as unique as crc32, at last) * - are always 6 characters long. * - only use the following characters: a-z A-Z 0-9 - _ @ * - are NOT cryptographically secure (they CAN be forged) * * In Shaarli, they are used as a tinyurl-like link to individual entries, * e.g. smallHash('20111006_131924') --> yZH23w */ function smallHash($text) { $t = rtrim(base64_encode(hash('crc32', $text, true)), '='); return strtr($t, '+/', '-_'); } /** * Tells if a string start with a substring */ function startsWith($haystack, $needle, $case=true) { if ($case) { return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0); } return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0); } /** * Tells if a string ends with a substring */ function endsWith($haystack, $needle, $case=true) { if ($case) { return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); } return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); } ?>