Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function shortcode_unautop( $pee ) {
- global $shortcode_tags;
- if ( empty( $shortcode_tags ) || !is_array( $shortcode_tags ) ) {
- return $pee;
- }
- $tagregexp = join( '|', array_map( 'preg_quote', array_keys( $shortcode_tags ) ) );
- $pattern =
- '/'
- . '<p>' // Opening paragraph
- . '\\s*+' // Optional leading whitespace
- . '(' // 1: The shortcode
- . '\\[' // Opening bracket
- . "($tagregexp)" // 2: Shortcode name
- . '(?![\\w-])' // Not followed by word character or hyphen
- // 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
- . ')*?'
- . '(?:'
- . '\\/\\]' // Self closing tag and closing bracket
- . '|'
- . '\\]' // Closing bracket
- . '(?:' // 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
- . ')?'
- . ')'
- . ')'
- . '\\s*+' // optional trailing whitespace
- . '<\\/p>' // closing paragraph
- . '/s';
- //this compiles the regex <p>\s*+(\[(shortcode1|shorcode2|etc)(?![\w-])[^\]\/]*(?:\/(?!\])[^\]\/]*)*?(?:\/\]|\](?:[^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+\[\/\2\])?))\s*+<\/p>
- return preg_replace( $pattern, '$1', $pee );
- }
Advertisement
Add Comment
Please, Sign In to add comment