wp_remove_surrounding_empty_script_tags

The timeline below displays how wordpress function wp_remove_surrounding_empty_script_tags has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.5

/**
 * Removes leading and trailing _empty_ script tags.
 *
 * This is a helper meant to be used for literal script tag construction
 * within `wp_get_inline_script_tag()` or `wp_print_inline_script_tag()`.
 * It removes the literal values of "<script>" and "</script>" from
 * around an inline script after trimming whitespace. Typically this
 * is used in conjunction with output buffering, where `ob_get_clean()`
 * is passed as the `$contents` argument.
 *
 * Example:
 *
 *     // Strips exact literal empty SCRIPT tags.
 *     $js = '<script>sayHello();</script>;
 *     'sayHello();' === wp_remove_surrounding_empty_script_tags( $js );
 *
 *     // Otherwise if anything is different it warns in the JS console.
 *     $js = '<script type="text/javascript">console.log( "hi" );</script>';
 *     'console.error( ... )' === wp_remove_surrounding_empty_script_tags( $js );
 *
 * @since 6.4.0
 * @access private
 *
 * @see wp_print_inline_script_tag()
 * @see wp_get_inline_script_tag()
 *
 * @param string $contents Script body with manually created SCRIPT tag literals.
 * @return string Script body without surrounding script tag literals, or
 *                original contents if both exact literals aren't present.
 */
function wp_remove_surrounding_empty_script_tags($contents)
{
    $contents = trim($contents);
    $opener = '<SCRIPT>';
    $closer = '</SCRIPT>';
    if (strlen($contents) > strlen($opener) + strlen($closer) && strtoupper(substr($contents, 0, strlen($opener))) === $opener && strtoupper(substr($contents, -strlen($closer))) === $closer) {
        return substr($contents, strlen($opener), -strlen($closer));
    } else {
        $error_message = __('Expected string to start with script tag (without attributes) and end with script tag, with optional whitespace.');
        _doing_it_wrong(__FUNCTION__, $error_message, '6.4');
        return sprintf('console.error(%s)', wp_json_encode(sprintf(
            /* translators: %s: wp_remove_surrounding_empty_script_tags() */
            __('Function %s used incorrectly in PHP.'),
            'wp_remove_surrounding_empty_script_tags()'
        ) . ' ' . $error_message));
    }
}

WordPress Version: 6.4

/**
 * Removes leading and trailing _empty_ script tags.
 *
 * This is a helper meant to be used for literal script tag construction
 * within `wp_get_inline_script_tag()` or `wp_print_inline_script_tag()`.
 * It removes the literal values of "<script>" and "</script>" from
 * around an inline script after trimming whitespace. Typlically this
 * is used in conjunction with output buffering, where `ob_get_clean()`
 * is passed as the `$contents` argument.
 *
 * Example:
 *
 *     // Strips exact literal empty SCRIPT tags.
 *     $js = '<script>sayHello();</script>;
 *     'sayHello();' === wp_remove_surrounding_empty_script_tags( $js );
 *
 *     // Otherwise if anything is different it warns in the JS console.
 *     $js = '<script type="text/javascript">console.log( "hi" );</script>';
 *     'console.error( ... )' === wp_remove_surrounding_empty_script_tags( $js );
 *
 * @private
 * @since 6.4.0
 *
 * @see wp_print_inline_script_tag()
 * @see wp_get_inline_script_tag()
 *
 * @param string $contents Script body with manually created SCRIPT tag literals.
 * @return string Script body without surrounding script tag literals, or
 *                original contents if both exact literals aren't present.
 */
function wp_remove_surrounding_empty_script_tags($contents)
{
    $contents = trim($contents);
    $opener = '<SCRIPT>';
    $closer = '</SCRIPT>';
    if (strlen($contents) > strlen($opener) + strlen($closer) && strtoupper(substr($contents, 0, strlen($opener))) === $opener && strtoupper(substr($contents, -strlen($closer))) === $closer) {
        return substr($contents, strlen($opener), -strlen($closer));
    } else {
        $error_message = __('Expected string to start with script tag (without attributes) and end with script tag, with optional whitespace.');
        _doing_it_wrong(__FUNCTION__, $error_message, '6.4');
        return sprintf('console.error(%s)', wp_json_encode(__('Function wp_remove_surrounding_empty_script_tags() used incorrectly in PHP.') . ' ' . $error_message));
    }
}