get_shortcode_regex
函数
get_shortcode_regex ( $tagnames = null )
- 参数
-
-
(array)
$tagnames
Optional. List of shortcodes to find. Defaults to all registered shortcodes.- Required: 否
- Default: null
-
(array)
- 返回值
-
- (string) The shortcode search regular expression
- 定义位置
-
-
wp-includes/shortcodes.php
, line 258
-
wp-includes/shortcodes.php
- 引入
- 2.5.0
- 弃用
- –
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 [[]]
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 }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。