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
檢視更多 >