1

さて、次のような文字列を生成する php ループがあります。

$string = "1st fee - $500.00<BR>
           2nd fee - $500.00<BR>
           3rd fee - $750.00<BR>"

ドルの金額を削除したいのですが、それが可能かどうかさえわかりません。私は preg_replace を使用して、$との間のすべてを削除しようとしまし<$が、次のようなものを取得することはできませんでした<:

   $string = "1st fee - <BR>
               2nd fee - <BR>
               3rd fee - <BR>"

残念ながら、次の-ように の複数のインスタンスが-1 行に表示されることがあるため、 を残す必要があります。

$string = "1st fee - Brian - $500.00<BR>
           2nd fee - John - $500.00<BR>
           3rd fee - Bob - $750.00<BR>"

あきらめて、不可能だと言っているだけでも、どんな助けも大歓迎です。前もって感謝します!

4

3 に答える 3

1

- $したがって、基本的には、 の最初の左矢印までのすべてを一致させたいだけです<br>。パターンの最初の部分- \\$($ は正規表現のキーワードであるためエスケープする必要があります) は、削除したい部分の最初の部分と一致し[^<]*、左矢印が見つかるまですべてを取得します。

$string = "1st fee - Brian - $500.00<BR>
           2nd fee - John - $500.00<BR>
           3rd fee - Bob - $750.00<BR>";

$replaced = preg_replace("# - \\$[^<]*#", "", $string);

出力:

string '1st fee - Brian<BR>
        2nd fee - John<BR>
        3rd fee - Bob<BR>'
于 2013-02-06T22:21:05.740 に答える
0

完全な形式を使用する必要があると思います。金額を置き換えたいので、金額に対応する正規表現を使用する必要があります。

$reg = '/ - \$[0-9]+\.[0-9]{2}/';
$withoutAmount = preg_replace($reg, '', $string);

他の通貨で正規表現を改善できます。

$reg = '/ - (\$|£|€)[0-9]+\.[0-9]{2}/':

テストするには: http://phpfiddle.org/main/code/auw-gb4

于 2013-02-06T22:51:17.420 に答える
0

次の例を使用して、金額と最後の -

<?php

$string = "1st fee - $500.00<BR>
           2nd fee - $500.00<BR>
           3rd fee - Bob - $750.00<BR>";

$pattern = '/\- \$[0-9]+\.[0-9]+\<BR>$/m';

echo preg_replace($pattern, '', $string);

/m修飾子のため、パターンは複数の行に一致することに注意してください。ここで、 $( パターンの末尾にある) は行の末尾に一致します。このようにして、すべての行を右から左に一致させ、金額とその最後の行だけを削除することができ-ます。

于 2013-02-06T22:24:33.187 に答える