# get_shortcode_regex()

URL: https://chugunov.pro/api-wordpress/functions/get_shortcode_regex/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.5.0.

## Сигнатура

```php
get_shortcode_regex( array $tagnames = null ): string
```

## Описание

Регулярное выражение объединяет теги шорткодов в классе регулярного выражения.
Регулярное выражение содержит 6 различных подгрупп, помогающих при разборе.
1 – Дополнительная [ для экранирования шорткодов двойными [[]] 2 – Имя шорткода 3 – Список аргументов шорткода 4 – Самозакрывающий / 5 – Содержимое шорткода, когда он оборачивает какой-либо контент.
6 – Дополнительная ] для экранирования шорткодов двойными [[]]

## Параметры

- `$tagnames` `array` — необязательный, по умолчанию `null`. Список шорткодов для поиска. По умолчанию все зарегистрированные шорткоды.

## Возвращаемое значение

`string`

## Исходный код

Файл: `wp-includes/shortcodes.php:324`

```php
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 bracket for escaping shortcodes: [[tag]].
	// phpcs:enable
}
```

## История изменений

- 4.4.0 — Added the $tagnames parameter.
- 2.5.0 — Introduced.

## Связанные

Используется в: [`get_shortcode_tags_in_content`](https://chugunov.pro/api-wordpress/functions/get_shortcode_tags_in_content/), [`do_shortcodes_in_html_tags`](https://chugunov.pro/api-wordpress/functions/do_shortcodes_in_html_tags/), [`wp_ajax_parse_embed`](https://chugunov.pro/api-wordpress/functions/wp_ajax_parse_embed/), [`has_shortcode`](https://chugunov.pro/api-wordpress/functions/has_shortcode/), [`do_shortcode`](https://chugunov.pro/api-wordpress/functions/do_shortcode/), [`strip_shortcodes`](https://chugunov.pro/api-wordpress/functions/strip_shortcodes/), [`get_post_galleries`](https://chugunov.pro/api-wordpress/functions/get_post_galleries/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/get_shortcode_regex/
