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 – 一个额外的[],允许用双[[]]来转义短代码。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
}
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 }
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
查看更多 >