2015-03-19 57 views
1

我有两个数量,如10-250我想要显示每英镑(磅)符号,并给出hyphenamount之间的每一个space它看起来像£10 - £250请建议我有任何正则表达式在那里添加£在每个价格量。如何在每个价格之前在PHP中添加英镑(磅)?

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); 
+2

您是否尝试过的东西?还是做了一些研究? – Rizier123 2015-03-19 13:16:29

+0

我已经尝试过,但没有得到任何解决方案。 :( – Developer 2015-03-19 13:17:31

+1

包括你的尝试,然后 – Epodax 2015-03-19 13:18:13

回答

1

这应该为你工作:

(在这里我只是用preg_replace()到英镑符号添加到数,并把空间周围的连字符)

<?php 

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

?> 

输出:

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

好的答案谢谢:) – Developer 2015-03-19 13:36:15

+0

@chatfun不客气! – Rizier123 2015-03-19 13:37:04

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

1

代替你不需要正则表达式是:

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

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

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

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"; 
    } 
});