我有两个金额,例如10-250
我希望在每个金额中显示£(磅)符号,并在space
和hyphen
之间分别给出一个amount
它看起来像{ {1}}请建议我任何正则表达式都可以在每个价格金额中添加£。
£10 - £250
编辑:
ex : -
1-10 = £1 - £10
10-20-30 = £10 - £20 -£30
500-600-800 = £500 - £600 - £800
答案 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);
}
您可能需要考虑使用£
代替£
,这取决于您正在做什么。
答案 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