1

目的のechoを取得するために、次のコードを微調整する必要があります。

<?php

$price = "A1,500.99B";

$pattern = '/([\d,]+\.)(\d+)(.*)$/';   // This is something that I need to change, in order to get the desired result

$formatted_1 = preg_replace($pattern, '$1', $price);
$formatted_2 = preg_replace($pattern, '$2', $price);
$formatted_3 = preg_replace($pattern, '$3', $price);
$formatted_4 = preg_replace($pattern, '$4', $price);

echo $formatted_1;   // Should give A
echo $formatted_2;   // Should give 1,500
echo $formatted_3;   // Should give 99
echo $formatted_4;   // Should give B

?>

$pattern内に別の( )を追加し、上記の$patternを微調整する必要があることはわかっていますが、どうすればよいかわかりません。

ありがとう。

4

2 に答える 2

2

一致が必要な場合に preg_replace を使用する特定の理由はありますか?

このパターンはあなたの価格に一致します:

/([a-zA-Z])([\d,]+)\.(\d+)([a-zA-Z])/

次に、この PHP を作成すると、次のようになります。

$price = "A1,500.99B";
//Match any letter followed by at least one decimal digit or comma 
//followed by a dot followed by a number of digits followed by a letter
$pattern = '/([a-zA-Z])([\d,]+)\.(\d+)([a-zA-Z])/';
preg_match($pattern,$price,$match);

$formatted_1 = $match[1];
//etc...

あなたは4つの試合をします。明らかに、独自の例外処理を追加する必要があります。

于 2012-05-03T17:41:52.980 に答える
0

これはあなたが探しているものですか?

$pattern = '/([0-9a-zA-Z,]+\.)(\d+)(.*)$/';
于 2012-05-03T17:41:35.840 に答える