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
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


