Properly strips all HTML tags including ‘script’ and ‘style’.
Description
This differs from strip_tags() because it removes the contents of the <script>
and <style>
tags. E.g. strip_tags( '<script>something</script>' )
will return ‘something’. wp_strip_all_tags() will return an empty string.
Parameters
$text
stringrequired- String containing HTML tags
$remove_breaks
booloptional- Whether to remove left over line breaks and white space chars
Default:
false
Source
function wp_strip_all_tags( $text, $remove_breaks = false ) {
if ( is_null( $text ) ) {
return '';
}
if ( ! is_scalar( $text ) ) {
/*
* To maintain consistency with pre-PHP 8 error levels,
* wp_trigger_error() is used to trigger an E_USER_WARNING,
* rather than _doing_it_wrong(), which triggers an E_USER_NOTICE.
*/
wp_trigger_error(
'',
sprintf(
/* translators: 1: The function name, 2: The argument number, 3: The argument name, 4: The expected type, 5: The provided type. */
__( 'Warning: %1$s expects parameter %2$s (%3$s) to be a %4$s, %5$s given.' ),
__FUNCTION__,
'#1',
'$text',
'string',
gettype( $text )
),
E_USER_WARNING
);
return '';
}
$text = preg_replace( '@<(script|style)[^>]*?>.*?</\\1>@si', '', $text );
$text = strip_tags( $text );
if ( $remove_breaks ) {
$text = preg_replace( '/[\r\n\t ]+/', ' ', $text );
}
return trim( $text );
}
Changelog
Version | Description |
---|---|
2.9.0 | Introduced. |
Example
Be aware that
wp_strip_all_tags()
cannot be used to check if a text is html by a simple comparison between the original string and the parsed string.The difference is in the
trim()
applied to the returned value.