function do_shortcode($content, $ignore_html = false) { global $shortcode_tags; if (false === strpos($content, '[')) { return $content; } if (empty($shortcode_tags) || !is_array($shortcode_tags)) { return $content; } // Find all registered tag names in $content. preg_match_all('@\\[([^<>&/\\[\\]\\x00-\\x20]++)@', $content, $matches); $tagnames = array_intersect(array_keys($shortcode_tags), $matches[1]); if (empty($tagnames)) { return $content; } $content = do_shortcodes_in_html_tags($content, $ignore_html, $tagnames); $pattern = get_shortcode_regex($tagnames); $content = preg_replace_callback("/{$pattern}/", 'do_shortcode_tag', $content); // Always restore square braces so we don't break things like <!--[if IE ]> $content = unescape_invalid_shortcodes($content); return $content; }
/** * Remove all shortcode tags from the given content. * * @since 2.5 * @uses $shortcode_tags * * @param string $content Content to remove shortcode tags. * @return string Content without shortcode tags. */ function strip_shortcodes( $content ) { global $shortcode_tags; if (empty($shortcode_tags) || !is_array($shortcode_tags)) return $content; $content = do_shortcodes_in_html_tags( $content, true ); $pattern = get_shortcode_regex(); $content = preg_replace_callback( "/$pattern/s", 'strip_shortcode_tag', $content ); // Always restore square braces so we don't break things like <!--[if IE ]> $content = unescape_invalid_shortcodes( $content ); return $content; }
/** * Remove all shortcode tags from the given content. * * @since 2.5.0 * * @global array $shortcode_tags * * @param string $content Content to remove shortcode tags. * @return string Content without shortcode tags. */ function strip_shortcodes($content) { global $shortcode_tags; if (false === strpos($content, '[')) { return $content; } if (empty($shortcode_tags) || !is_array($shortcode_tags)) { return $content; } // Find all registered tag names in $content. preg_match_all('@\\[([^<>&/\\[\\]\\x00-\\x20=]++)@', $content, $matches); $tags_to_remove = array_keys($shortcode_tags); /** * Filters the list of shortcode tags to remove from the content. * * @since 4.7.0 * * @param array $tag_array Array of shortcode tags to remove. * @param string $content Content shortcodes are being removed from. */ $tags_to_remove = apply_filters('strip_shortcodes_tagnames', $tags_to_remove, $content); $tagnames = array_intersect($tags_to_remove, $matches[1]); if (empty($tagnames)) { return $content; } $content = do_shortcodes_in_html_tags($content, true, $tagnames); $pattern = get_shortcode_regex($tagnames); $content = preg_replace_callback("/{$pattern}/", 'strip_shortcode_tag', $content); // Always restore square braces so we don't break things like <!--[if IE ]> $content = unescape_invalid_shortcodes($content); return $content; }