get_shortcode_regex() – Retrieves the shortcode regular expression for searching.
You appear to be a bot. Output may be restricted
Description
Retrieves the shortcode regular expression for searching.
The regular expression combines the shortcode tags in the regular expression in a regex class. The regular expression contains 6 different sub matches to help with parsing.
- – An extra [ to allow for escaping shortcodes with double [[]]
- – The shortcode name
- – The shortcode argument list
- – The self closing /
- – The content of a shortcode when it wraps some content.
- – An extra ] to allow for escaping shortcodes with double [[]]
- $tagnames
- ( array ) optional – Optional. List of shortcodes to find. Defaults to all registered shortcodes.
Usage
$string = get_shortcode_regex( $tagnames );
Parameters
Returns
string The shortcode search regular expression
Source
File name: wordpress/wp-includes/shortcodes.php
Lines:
1 to 45 of 45
function get_shortcode_regex( $tagnames = null ) { global $shortcode_tags; if ( empty( $tagnames ) ) { $tagnames = array_keys( $shortcode_tags ); } $tagregexp = implode( '|', array_map( 'preg_quote', $tagnames ) ); /* * WARNING! Do not change this regex without changing do_shortcode_tag() and strip_shortcode_tag(). * Also, see shortcode_unautop() and shortcode.js. */ // phpcs:disable Squiz.Strings.ConcatenationSpacing.PaddingFound -- don't remove regex indentation return '\\[' // Opening bracket. . '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]]. . "($tagregexp)" // 2: Shortcode name. . '(?![\\w-])' // Not followed by word character or hyphen. . '(' // 3: Unroll the loop: Inside the opening shortcode tag. . '[^\\]\\/]*' // Not a closing bracket or forward slash. . '(?:' . '\\/(?!\\])' // A forward slash not followed by a closing bracket. . '[^\\]\\/]*' // Not a closing bracket or forward slash. . ')*?' . ')' . '(?:' . '(\\/)' // 4: Self closing tag... . '\\]' // ...and closing bracket. . '|' . '\\]' // Closing bracket. . '(?:' . '(' // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags. . '[^\\[]*+' // Not an opening bracket. . '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag. . '[^\\[]*+' // Not an opening bracket. . ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag. . ')?' . ')' . '(\\]?)'; // 6: Optional second closing brocket for escaping shortcodes: [[tag]]. // phpcs:enable }