WordPress Version: 6.2
/**
* Sanitizes content from bad protocols and other characters.
*
* This function searches for URL protocols at the beginning of the string, while
* handling whitespace and HTML entities.
*
* @since 1.0.0
*
* @param string $content Content to check for bad protocols.
* @param string[] $allowed_protocols Array of allowed URL protocols.
* @param int $count Depth of call recursion to this function.
* @return string Sanitized content.
*/
function wp_kses_bad_protocol_once($content, $allowed_protocols, $count = 1)
{
$content = preg_replace('/(�*58(?![;0-9])|�*3a(?![;a-f0-9]))/i', '$1;', $content);
$content2 = preg_split('/:|�*58;|�*3a;|:/i', $content, 2);
if (isset($content2[1]) && !preg_match('%/\?%', $content2[0])) {
$content = trim($content2[1]);
$protocol = wp_kses_bad_protocol_once2($content2[0], $allowed_protocols);
if ('feed:' === $protocol) {
if ($count > 2) {
return '';
}
$content = wp_kses_bad_protocol_once($content, $allowed_protocols, ++$count);
if (empty($content)) {
return $content;
}
}
$content = $protocol . $content;
}
return $content;
}