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