public function __construct($preserve = false)
{
// unreserved letters, ought to const-ify
for ($i = 48; $i <= 57; $i++) {
// digits
$this->preserve[$i] = true;
}
for ($i = 65; $i <= 90; $i++) {
// upper-case
$this->preserve[$i] = true;
}
for ($i = 97; $i <= 122; $i++) {
// lower-case
$this->preserve[$i] = true;
}
$this->preserve[45] = true;
// Dash -
$this->preserve[46] = true;
// Period .
$this->preserve[95] = true;
// Underscore _
$this->preserve[126] = true;
// Tilde ~
// extra letters not to escape
if ($preserve !== false) {
for ($i = 0, $c = strlen($preserve); $i < $c; $i++) {
$this->preserve[ord($preserve[$i])] = true;
}
}
}