我有一個這樣的字串
En babyalarm kan koste alt fra $30 til $20.99, afh?ngigt af de funktioner, du ?nsker. De fleste sk?rme kommer med et grundl?ggende s?t funktioner, koster $3,000.
我需要用計算來替換價格。
我有這個代碼,但它只得到不包括的價格。和 ,
$pattern = '#\$(\d*)#';
$string_with_price_replaced = preg_replace_callback($pattern, function($match) {
return (string)(number_format($match[1]*6.5, 0, "", ""));
}, $string);
echo $string_with_price_replaced;
uj5u.com熱心網友回復:
試試這個正則運算式來包含小數點和逗號:
\$(\d (?:,\d )*(?:\.\d )?)
點擊演示
解釋:
\$- 火柴$(\d (?:,\d )*(?:\.\d )?)\d- 匹配 1 次或多次出現的數字(?:,\d )*- 匹配 0 次或多次出現的以逗號 (,) 開頭后跟 1 位數字的子字串(?:\.\d )?- 匹配數字的小數部分和小數部分,通過?在末尾放置一個可選的數字
雖然上面的正則運算式會包含,在匹配的數字中,所以當你嘗試對這些數字進行計算時,你會得到一個錯誤。因此,另一種方法是洗掉數字之間的逗號,然后執行這些計算,如下面的代碼所示:
$pattern = '#\$(\d (?:\.\d )?)#';
$removeComma = '/(?<=\d),(?=\d)/m';
$string='En babyalarm kan koste alt fra $30 til $20.99, afh?ngigt af de funktioner, du ?nsker. De fleste sk?rme kommer med et grundl?ggende s?t funktioner, koster $3,000';
$string = preg_replace($removeComma, '', $string);
$string_with_price_replaced = preg_replace_callback($pattern, function($match) {
return (string)(number_format($match[1]*6.5, 0, "", ""));
}, $string);
echo $string_with_price_replaced;
代碼輸出
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/405582.html
標籤:
下一篇:如何將反向參考傳遞給函式
