WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com

wp_sprintf() WP 2.5.0

Вариант PHP функции sprintf() от WordPress. Поддерживает %l (list - список) в передаваемом формате.

Получает отформатированную строку, созданную на базе указанного формата: смотрите описание PHP функции sprintf().

✈ 1 раз = 0.000104с = быстро | 50000 раз = 0.30с = очень быстро | PHP 7.1.11, WP 4.9.7
Хуки из функции:
Возвращает

Строку. Текст созданный на основе указанного формата (паттерна).

Использование

wp_sprintf( $pattern, $args... );
$pattern(строка) (обязательный)

Строка формата, в которой будут использованы параметры $args.

В дополнении к имеющимся в sprintf(), функция понимает заменитель %l (list - список). Этот заменитель обрабатывается через фильтр wp_sprintf на который в WP прицеплена функция wp_sprintf_l(). На место этого заменителя нужно передавать массив со значениями, которые будут записаны через запятую (последняя запятая будет заменена на «и»).

$args(смешанный) (обязательный)
,... Параметры, которые будут использованы в строке формата $pattern.

Примеры

#1 Пример использования заменителя %l

echo wp_sprintf( '%s: %l', 'Префикс', array( 'один', 'два', 'три', 'четыре' ) );
//> Префикс: один, два, три и четыре

#2 Еще примеры преобразований формата

$pattern = '%d обезьян сидят на %s';
echo wp_sprintf( $pattern, 5, 'дереве' ); //> 5 обезьян сидят на дереве

$pattern = 'На %2$s сидят %1$d обезьян';
echo wp_sprintf( $pattern, 5, 'дереве' ); //> На дереве сидят 5 обезьян

$pattern = 'На %2$s сидят %1$d обезьян. %1$d обезьян сидят на %2$s.';
echo wp_sprintf( $pattern, 5, 'дереве' ); //> На дереве сидят 5 обезьян. 5 обезьян сидят на дереве.

Код wp_sprintf: wp-includes/formatting.php VER 5.0.1

<?php
function wp_sprintf( $pattern ) {
	$args = func_get_args();
	$len = strlen($pattern);
	$start = 0;
	$result = '';
	$arg_index = 0;
	while ( $len > $start ) {
		// Last character: append and break
		if ( strlen($pattern) - 1 == $start ) {
			$result .= substr($pattern, -1);
			break;
		}

		// Literal %: append and continue
		if ( substr($pattern, $start, 2) == '%%' ) {
			$start += 2;
			$result .= '%';
			continue;
		}

		// Get fragment before next %
		$end = strpos($pattern, '%', $start + 1);
		if ( false === $end )
			$end = $len;
		$fragment = substr($pattern, $start, $end - $start);

		// Fragment has a specifier
		if ( $pattern[$start] == '%' ) {
			// Find numbered arguments or take the next one in order
			if ( preg_match('/^%(\d+)\$/', $fragment, $matches) ) {
				$arg = isset($args[$matches[1]]) ? $args[$matches[1]] : '';
				$fragment = str_replace("%{$matches[1]}$", '%', $fragment);
			} else {
				++$arg_index;
				$arg = isset($args[$arg_index]) ? $args[$arg_index] : '';
			}

			/**
			 * Filters a fragment from the pattern passed to wp_sprintf().
			 *
			 * If the fragment is unchanged, then sprintf() will be run on the fragment.
			 *
			 * @since 2.5.0
			 *
			 * @param string $fragment A fragment from the pattern.
			 * @param string $arg      The argument.
			 */
			$_fragment = apply_filters( 'wp_sprintf', $fragment, $arg );
			if ( $_fragment != $fragment )
				$fragment = $_fragment;
			else
				$fragment = sprintf($fragment, strval($arg) );
		}

		// Append to result and move to next fragment
		$result .= $fragment;
		$start = $end;
	}
	return $result;
}

Cвязанные функции

Из метки: Аналоги PHP (замена PHP функций)

Еще из раздела: Вспомогательные

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться