如何在PHP中的每个价格之前添加£(英镑)?

时间:2015-03-19 13:14:27

标签: php regex explode

我有两个金额,例如10-250我希望在每个金额中显示£(磅)符号,并在spacehyphen之间分别给出一个amount它看起来像{ {1}}请建议我任何正则表达式都可以在每个价格金额中添加£。

£10 - £250

编辑:

ex : -
1-10 = £1 - £10
10-20-30 = £10 - £20 -£30
500-600-800 = £500 - £600 - £800

4 个答案:

答案 0 :(得分:1)

这应该适合你:

(这里我只使用preg_replace()为数字添加井号并在连字符周围添加空格)

<?php

    $str = "10-20-30";  
    echo $str = preg_replace("/(\d+)(-)?/", "£$1 $2 ", $str);

?>

输出:

£1 - £10
£10 - £20 - £30
£500 - £600 - £800

答案 1 :(得分:1)

您不需要使用正则表达式:

// 500-600-800 to £500 - £600 - £800
echo convert('500-600-800');

function convert($str)
{
    $parts = explode('-', $str);
    return '£'.implode(' - £', $parts);
}

您可能需要考虑使用&pound;代替£,这取决于您正在做什么。

答案 2 :(得分:1)

您可以使用explode()array_reduce()

$priceStr = '10-250-2';
echo array_reduce(explode('-', $priceStr), function($result, $item) {
    if(!empty($result)) {
        return "$result - £$item";
    } else {
        return "£$item";
    }
});

答案 3 :(得分:0)

使用这个不会重新添加任何井号的正则表达式:

(?<!£)\b(\d+)\b

请参阅demo here

演示代码:

$re = "/(?<!£)\\b(\\d+)\\b/"; 
$str = "1-10\n10-20-30\n500-600-800\n£500"; 
$subst = "£$1"; 

$result = preg_replace($re, $subst, $str);

请注意,£500未替换为££500