Автоматически конвертировать валюты и метрики из текста в PHP - PullRequest
0 голосов
/ 31 марта 2012

У меня есть такой текст

$text="The tower is 94.5m high, 
       the view is up to 100km. 
       The entrance is 8€";

Теперь я хочу предоставить подсказку для каждой метрики или валюты, чтобы получить такой результат:

$text="The tower is <abbr title="310ft">94.5m</a> high, 
       the view is up to <abbr title="62mi">100km</abbr>. 
       The entrance is <abbr title="10USD">8€</abbr>

Какая-то приятная функция PHPпреобразовать эти числа автоматически в тексте?Спасибо.

edit

Чтобы упростить этот пример, давайте предположим, что у нас везде фиксированные показатели.Вопрос в том, что за preg_replace или что использовать ... Я использовал только что-то вроде этого

preg_replace("/(.*)€/", $1*1.2, $text)

, это всего лишь пример того, как я ожидал, чтобы это сработало, но, конечно, это не,:)

Ответы [ 3 ]

2 голосов
/ 31 марта 2012

Нет встроенной функции PHP, которая будет автоматически выполнять преобразование между различными типами единиц. Вам придется сделать это самостоятельно с соответствующими коэффициентами конверсии.

0 голосов
/ 31 марта 2012

Что-то вроде следующего:

$text="The tower is 94.5m high,  
       the view is up to 100km.  
       The entrance is 8€";

$result = preg_replace_callback("/(([0-9\.]+)(k?m))/", 'fn', $text);

var_dump($result);

function fn($matches) {
    switch($matches[3]) {
        case 'm' :
            // m to feet
            $conversion = $matches[2] * 3.28;
            $conversionUOM = 'ft';
            break;
        case 'km' :
            // km to miles
            $conversion = $matches[2] * 0.6;
            $conversionUOM = 'miles';
            break;
    }
    return '<abbr title="'.$conversion.$conversionUOM.'">'.$matches[0].'</abbr>';
}

Вам нужно будет настроить регулярное выражение и написать дополнительные регистры для любых других единиц преобразования UOM, которые вам могут понадобиться, и использовать правильные цифры в реальных конверсиях (я только использовал быстрые и грязные значения) и любое форматирование из чисел тоже ... но это должно дать вам основу.

0 голосов
/ 31 марта 2012

Вам нужно написать свои собственные функции, чтобы сделать это. Вы делаете это в PHP следующим образом:

function meters_in_feet($meters)
{
    return $meters*3.28; // source: Google
}

Тогда вам нужно назвать это как:

$height_meters = 94.5;
$height_feet = meters_in_feet($height_meters);

Тогда:

echo '<abbr title="'.$height_feet.'">'.$height_meters.'m</a> high.';

Это пахнет домашним заданием, так как для того, чтобы получить результаты измерений и т. Д. Из входной текстовой строки, что, вероятно, вас и просят, это упражнение для читателя. ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...