get_shortcode_regex

函数
get_shortcode_regex ( $tagnames = null )
参数
  • (array) $tagnames Optional. List of shortcodes to find. Defaults to all registered shortcodes.
    Required:
    Default: null
返回值
  • (string) The shortcode search regular expression
定义位置
相关方法
get_shortcode_atts_regexdo_shortcode_tagshortcode_existsget_tag_regexstrip_shortcode_tag
引入
2.5.0
弃用
-

get_shortcode_regex函数是一个WordPress函数,它检索用于解析短码的正则表达式模式: 这个函数不接受任何参数,并返回正则表达式模式。

检索用于搜索的短码正则表达式。

正则表达式将正则表达式中的短码标签结合在一个regex类中。

正则表达式包含6个不同的子匹配,以帮助解析。

1 – 一个额外的[,允许用双[[]]来转义短代码。
2 – 短码名称
3 – 短码的参数列表
4 – 自我关闭/
5 – 短码的内容,当它包装了一些内容时。
6 – 一个额外的[],允许用双[[]]来转义短代码。

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
}

常见问题

FAQs
查看更多 >