ConFoo 2025

NumberFormatter::setSymbol

numfmt_set_symbol

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::setSymbol -- numfmt_set_symbolУстанавливает значение символа

Описание

Объектно-ориентированный стиль

public NumberFormatter::setSymbol(int $symbol, string $value): bool

Процедурный стиль

numfmt_set_symbol(NumberFormatter $formatter, int $symbol, string $value): bool

Устанавливает символ, связанный со средством форматирования. Средство форматирования использует символы для представления специальных символов, зависящих от языка, в числах, например, знак процента. Этот API не поддерживается для средств форматирования на основе правил.

Список параметров

formatter

Объект NumberFormatter.

symbol

Спецификатор символа, одна из констант символа форматирования.

value

Текст для символа.

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

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Примеры

Пример #1 Пример использования numfmt_set_symbol()

<?php
$fmt
= numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo
"Разделитель: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo
numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
echo
"Разделитель: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo
numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Пример #2 Пример использования в объектно-ориентированном стиле

<?php
$fmt
= new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo
"Разделитель: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo
$fmt->format(1234567.891234567890000)."\n";
$fmt->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
echo
"Разделитель: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo
$fmt->format(1234567.891234567890000)."\n";
?>

Результат выполнения приведённого примера:

Разделитель: .
1.234.567,891
Разделитель: *
1*234*567,891

Смотрите также

Добавить

Примечания пользователей 1 note

up
8
vreemt+phpnet at gmail dot com
5 years ago
this could be obvious to some, but `setSymbol(NumberFormatter::CURRENCY_SYMBOL, '')` doesn't work for `formatCurrency` - it will simply be ignored...

use `NumberFormatter::CURRENCY` and `$fmt->format(123);` to get a currency value with the symbol specified as `CURRENCY_SYMBOL` (or `INTL_CURRENCY_SYMBOL`)
To Top