0

CMS内のmagentoを介して提供される任意のテキストがあり、

取得されるテキストには、価格が含まれている場合があります。たとえば

配信テキスト

200 ユーロ以上のご注文は無料でお届けします。200 ユーロ未満の注文には 10 ユーロの手数料がかかります。重量物は別途料金が発生する場合がございます。

価格の出現ごとに置き換えるにはどうすればよいので、上記の場合は変更します

€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 (ユーロ記号のない価格) の要素を使用して、見つかった一致を変更したいとしましょう。どうすればいいですか?

4

3 に答える 3

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] => 
        )
)

また、適用するロジックを決定することができます (値とお金のサインを知る)

于 2013-03-20T11:16:30.470 に答える
0

PHP ドキュメントは、開始するのに適した場所です。文字列検索機能を使用する必要があります。PHP ドキュメント全体を参照してください。Google で string search php を検索するだけで、大量の情報が見つかります。

ここにあなたを助けるかもしれないいくつかの機能があります:

http://php.net/manual/en/function.strpos.php

http://php.net/manual/en/function.preg-match.php

プレグマッチはあなたのニーズに合っていると思います。その機能を理解し、スコープ内で使用してください。

幸運を !

于 2013-03-20T11:18:29.897 に答える
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;

テストはしていませんが、うまくいくはずです。

アップデート:

あなたが持っている変換について考えたところ、おそらく最初に通貨記号を削除してから追加する必要があります。しかし、そのための出発点が必要です-リターン関数で遊んでください

于 2013-03-20T12:17:30.047 に答える