В PHP есть отличное расширение intl, основанное на сишной библиотеке ICU, в которой не только реализованы все алгоритмы, но и содержатся данные CLDR о различных зависимых от локали штуках вроде символов валют. Код показывает, как получить символ валюты.
Пример:
echo getCurrencySymbol('EUR');
echo getCurrencySymbol('GBP');
выведет €
и £
.
Если указать вторым аргументом код локали, будет использовано обозначение валюты именно для этой локали:
echo getCurrencySymbol('RUR', 'ru_RU');
выведет р.
.
Кстати, в новых версиях CLDR уже есть символ рубля, так что как только будет релиз, можно будет обновить данные у себя и получить этот самый символ.
function getCurrencySymbol($currencyCode, $locale = 'en_US')
{
$formatter = new \NumberFormatter($locale . '@currency=' . $currencyCode, \NumberFormatter::CURRENCY);
return $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
}