}
}
+ /**
+ * Encode string using URL-safe Base64.
+ *
+ * @param string $v
+ *
+ * @return string
+ * @see https://tools.ietf.org/html/rfc4648#section-5
+ */
+ public static function base64UrlEncode($v) {
+ return rtrim(str_replace(['+', '/'], ['-', '_'], base64_encode($v)), '=');
+ }
+
+ /**
+ * Decode string using URL-safe Base64.
+ *
+ * @param string $v
+ *
+ * @return false|string
+ * @see https://tools.ietf.org/html/rfc4648#section-5
+ */
+ public static function base64UrlDecode($v) {
+ // PHP base64_decode() is already forgiving about padding ("=").
+ return base64_decode(str_replace(['-', '_'], ['+', '/'], $v));
+ }
+
/**
* Determine the string replacements for redaction.
* on the basis of the regular expressions
public static function pluralize($str) {
$lastLetter = substr($str, -1);
$lastTwo = substr($str, -2);
- if ($lastLetter == 's' || $lastTwo == 'ch') {
+ if ($lastLetter == 's' || $lastLetter == 'x' || $lastTwo == 'ch') {
return $str . 'es';
}
- if ($lastLetter == 'y' && $lastTwo != 'ey') {
+ if ($lastLetter == 'y' && !in_array($lastTwo, ['ay', 'ey', 'iy', 'oy', 'uy'])) {
return substr($str, 0, -1) . 'ies';
}
return $str . 's';