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.

  1. – An extra [ to allow for escaping shortcodes with double [[]]
  2. – The shortcode name
  3. – The shortcode argument list
  4. – The self closing /
  5. – The content of a shortcode when it wraps some content.
  6. – An extra ] to allow for escaping shortcodes with double [[]]
  7. Usage

    $string = get_shortcode_regex( $tagnames );

    Parameters

    $tagnames
    ( array ) optional – Optional. List of shortcodes to find. Defaults to all registered shortcodes.

    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
    }
     

     View on GitHub View on Trac