【问题标题】:How to add £(pound) before every price in php?如何在php的每个价格之前添加£(磅)?
【发布时间】:2015-03-19 13:14:26
【问题描述】:

我有两个金额,例如 10-250 我想在每个金额中显示 £(磅)符号,并在 hyphenamount 之间各给出一个 space 它看起来像 £10 - £250 请建议我任何正则表达式有用于在每个价格金额中添加 £。

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

编辑:

Code:
//$priceStr = urldecode($this->params['named']['price']);
$priceStr = '10-250';
$getExplodePrice = explode('-',$priceStr);
foreach($getExplodePrice as $newPrice){
    $price[] = '£'.$newPrice.' -';
}

echo implode(' ',$price);

【问题讨论】:

  • 你试过了吗?还是做了一些研究?
  • 我已经尝试但没有得到任何解决方案。 :(
  • 然后包含您的尝试
  • 当然。等一下,我正在编辑我的问题。

标签: php regex explode


【解决方案1】:

这应该适合你:

(这里我只是使用preg_replace()在数字上添加一个井号,并在连字符周围放置空格)

<?php

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

?>

输出:

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

【讨论】:

  • 很好的答案谢谢:)
【解决方案2】:

你不需要正则表达式:

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

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

您可能要考虑使用&amp;pound; 而不是£,这取决于您在做什么。

【讨论】:

    【解决方案3】:

    您可以为此使用explode()array_reduce()

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

    【讨论】:

      【解决方案4】:

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

      (?&lt;!£)\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 替换

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-04
        • 2014-06-11
        • 1970-01-01
        • 2011-10-29
        • 2012-11-19
        • 1970-01-01
        • 2017-09-11
        • 1970-01-01
        相关资源
        最近更新 更多