Как я могу отобразить SubTotal на OpenCart на любой странице?

В настоящее время единственная известная мне глобальная команда PHP:

<?=$text_items?>

Это плюет:

1 item(s) - £318.75

Я хочу получить значение 318.75, поэтому на данный момент я пытаюсь заменить, но это не работает гладко:

$short = $text_items;
$short = str_replace("£", "", $short);
$short = str_replace("&pound;", "", $short);
$short = str_replace("-", "", $short);
$short = str_replace("&ndash;", "", $short);
$short = str_replace(" ", "", $short);
$short = str_replace("-", "", $short);
$short = str_replace("ITEMS", "", $short);
$short = str_replace("(", "", $short);
$short = str_replace(")", "", $short);
$short = str_replace("item(s)", "", $short);
$short = str_replace("ITEM", "", $short);

person TheBlackBenzKid    schedule 23.08.2012    source источник
comment
Разве нет способа получить переменную напрямую, вместо того, чтобы анализировать ее по тексту, как это?   -  person Pacerier    schedule 05.10.2014


Ответы (1)


$total = @floatval(end(explode('£', html_entity_decode($text_items))));
  • html_entity_decode изменяет &pound; на £
  • end(explode('£' дает вам строку после символа '£'
  • наконец, floatval оценивает строку как плавающую.
  • @ обходит ошибку E_STRICT, которая возникает при передаче константы в функцию end().

Рабочий пример


Второе решение - Regexp:

preg_match_all('!\d+(?:\.\d+)?!', $text_items, $result);
echo $result[1];

Рабочий пример

person Peter    schedule 23.08.2012
comment
Мне нужно только значение 318.75 без знаков фунта, без тире. Только это значение. В основном значение после знака £ GBP. - person TheBlackBenzKid; 24.08.2012
comment
да, поэтому я дал вам два решения. Вы хоть проверяли мои примеры? - person Peter; 24.08.2012
comment
Спасибо. Что быстрее и лучше использовать? Не могли бы вы также объяснить Regex. - person TheBlackBenzKid; 24.08.2012
comment
Я рекомендую вам 1-е решение. Regex просто ищет два десятичных знака и точку . в строке - person Peter; 24.08.2012