从shortcodes标记中检索所有属性。

原型

shortcode_parse_atts( string $text )

描述

属性列表具有属性名称作为键,属性值作为键/值对中的值。这允许更容易地检索属性,因为必须知道所有属性。

参数

$text (string) (Required)

返回值

(array|string)  属性值列表。如果trim($ text)==’“”',则返回空数组。如果trim($ text)==’',则返回空字符串。检查所有其他匹配项是否为空()。

源文件

路径:wp-includes/shortcodes.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
...
function shortcode_parse_atts($text) {
	$atts = array();
	$pattern = get_shortcode_atts_regex();
	$text = preg_replace("/[\x{00a0}\x{200b}]+/u", " ", $text);
	if ( preg_match_all($pattern, $text, $match, PREG_SET_ORDER) ) {
		foreach ($match as $m) {
			if (!empty($m[1]))
				$atts[strtolower($m[1])] = stripcslashes($m[2]);
			elseif (!empty($m[3]))
				$atts[strtolower($m[3])] = stripcslashes($m[4]);
			elseif (!empty($m[5]))
				$atts[strtolower($m[5])] = stripcslashes($m[6]);
			elseif (isset($m[7]) && strlen($m[7]))
				$atts[] = stripcslashes($m[7]);
			elseif (isset($m[8]) && strlen($m[8]))
				$atts[] = stripcslashes($m[8]);
			elseif (isset($m[9]))
				$atts[] = stripcslashes($m[9]);
		}

		// Reject any unclosed HTML elements
		foreach( $atts as &$value ) {
			if ( false !== strpos( $value, '<' ) ) {
				if ( 1 !== preg_match( '/^[^<]*+(?:<[^>]*+>[^<]*+)*+$/', $value ) ) {
					$value = '';
				}
			}
		}
	} else {
		$atts = ltrim($text);
	}
	return $atts;
}

...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/shortcode_parse_atts/