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; } }