我有一段任意文本,通过CMS内的magento提供,
检索到的文本可能包含其中的价格。例如,
投放文字
超过200欧元的订单免费送达。订单满10欧元 低于200欧元。重型商品可能会收取额外费用。
我如何更换每个价格的出现,所以在上面的情况下我会改变
€200
€10
€200
我想根据当前使用的货币替换这些价格。
$fromCur = 'EUR'; // currency code to convert from
$toCur = 'USD'; // currency code to convert to
$toCurrencyPrice = Mage::helper('directory')->currencyConvert($fromCurrencyPrice, $fromCur, $toCur);
这是我将如何转换价格,唯一的是,我不知道我将如何在文本中找到价格
这是我到目前为止所尝试的内容
//the text to search
$text = 'Orders over €200 are delivered Free Of Charge. €10 charge for orders under €200. There may be additional charges for heavy goods.';
$matches = array();
//find a price with a euro symbol
preg_match_all("/€[0-9]+/", $text, $matches);
$ints = array();
$counter = 0;
//remove the euro symbol
foreach ($matches[0] as $match) {
//echo substr( $match,6) . '<br/>';
$ints[$counter] = substr( $match,6);
$counter++;
}
//now i know i have to convert it to my price, but my issue is, how do i now replace new values, with the old values inside the $ text varaible
假设我想改变找到的匹配,使用$ ints中的元素(没有欧元符号的价格)。我该怎么做?
答案 0 :(得分:0)
不是完整的解决方案,但要开始,您可以使用以下方法提取价格和单位:
$text = "I bought a shoes 33 $, a tee shirt 44 $ and a short 55 €.";
$match = array();
preg_match_all("/([0-9]+)[ ]*(€)|([0-9]+)[ ]*([$])/", $text, $match);
print_r($match);
它会给你:
Array
(
[0] => Array
(
[0] => 33 $
[1] => 44 $
[2] => 55 €
)
[1] => Array
(
[0] =>
[1] =>
[2] => 55
)
[2] => Array
(
[0] =>
[1] =>
[2] => €
)
[3] => Array
(
[0] => 33
[1] => 44
[2] =>
)
[4] => Array
(
[0] => $
[1] => $
[2] =>
)
)
您将能够决定要应用的逻辑(知道值和货币符号)
答案 1 :(得分:0)
PHP文档是一个很好的起点。您必须使用字符串搜索功能。尝试搞清楚自己,你需要查看完整的PHP文档。只需在谷歌搜索字符串搜索php,你就会发现大量的信息。
以下是一些可能对您有所帮助的功能:
http://php.net/manual/en/function.strpos.php
http://php.net/manual/en/function.preg-match.php
我认为pregmatch会满足您的需求。了解该功能并在您的范围内使用它。
祝你好运!答案 2 :(得分:0)
假设您总是将€作为收入货币,请尝试下一个代码:
$string = 'Orders over €200 are delivered Free Of Charge. €10 charge for orders under €200. There may be additional charges for heavy goods.';
$pattern = "#€[0-9]{1,}#";
$newStr = preg_replace_callback($pattern, create_function(
'$matches',
'return Mage::helper(\'directory\')->currencyConvert($matches[0], \'EUR\', \'USD\');'
), $string);
echo $newStr;
我没有测试过,但它应该可以工作;
<强>更新强>
我只想到你有转换,你可能需要删除然后再添加货币符号;但你应该有一个起点 - 只需玩回归功能