parse($entry); $sanitizer = HtmlSanitizer\Sanitizer::create([ "extensions" => ["basic", "image", "list", "code"], "tags" => [ "img" => [ "allowed_attributes" => ["src", "alt", "title", "class"], "allowed_hosts" => null, ], ], ]); $preclean = $sanitizer->sanitize($rendered->getContent()); $cleaned = strip_tags($rendered->getContent(), [ "a", "br", "p", "strong", "br", "img", "iframe", "ul", "li", "i", "h1", "h2", "h3", "pre", "code", ]); return $cleaned; } public static function safeString($string) { return strtolower( trim( preg_replace( "~[^0-9a-z]+~i", "_", html_entity_decode( preg_replace( "~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i", '$1', htmlentities($string, ENT_QUOTES, "UTF-8") ), ENT_QUOTES, "UTF-8" ) ), "-" ) ); } public static function randomString(int $length) { $alphanum = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; $special = '*&!@%^#$'; $alphabet = $alphanum . $special; $random = openssl_random_pseudo_bytes($length); $alphabet_length = strlen($alphabet); $string = ""; for ($i = 0; $i < $length; ++$i) { $string .= $alphabet[ord($random[$i]) % $alphabet_length]; } //secret needs to be a valid token if ($length == 12) { try { $secret = Token::create(12, $string, time() + 3600, "localhost"); return $string; } catch (BuildException $e) { //bad secret, so try agiain //echo "BAD STRING"; return self::randomString(12); } if (Token::validate($key, $string)) { return $string; } else { return self::randomString(12); } } } private static function checkSpecial($string) { $specials = ["*", "&", "!", "@", "%", "^", "#", "$"]; $valid = false; foreach ($specials as $item) { if (strpos($string, $item)) { return $valid = true; } } return $valid; } }