我正在尝试使用preg_replace()
从字符串中删除加号(+
)。我用了
$variation = preg_replace('/[^\p{L}\p{N}\s]/u', '', $variation);
但是这也删除了句点(.
),我在字符串中需要它。有没有办法只删除加号?
答案 0 :(得分:16)
尽管这个问题的原始答案确实达到了预期效果,但它并不是执行此简单任务的最有效方法。如上面的评论所述,在这种情况下,首选使用str_replace()
。
$variation = str_replace("+", "", $variation);
原始答案:
这样可以删除仅一个加号:
$variation = preg_replace(/[+]/, "", $variation);
你可以看到它在这里工作:http://www.phpliveregex.com/p/1Fb(一定要选择preg_replace函数)
答案 1 :(得分:5)
对于+$7.99
可能:
$string = ltrim($string, '+$');
或者,无论出于何种原因,他们都在使用trim()
。
答案 2 :(得分:4)
鉴于$value = '+$2.47';
:
$value = (float) strtr($value, [
'$' => '',
'+' => '',
]);
var_dump($value); // double(2.47)
注意(float)
演员表;我认为,当您使用数值时,这可能是有利的。
或者,如果你一直在使用preg_replace
,那么匹配一个否定的类:
$value = (float) preg_replace('/[^0-9\.]/', '', $value);
var_dump($value); // double(2.47)
这将替换所有非数字非点(.
)字符。