46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
|
<?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);
|
||
|
}
|
||
|
?>
|