从字符串中删除加号(+)

时间:2013-10-23 20:51:47

标签: php regex

我正在尝试使用preg_replace()从字符串中删除加号(+)。我用了

$variation = preg_replace('/[^\p{L}\p{N}\s]/u', '', $variation);

但是这也删除了句点(.),我在字符串中需要它。有没有办法只删除加号?

3 个答案:

答案 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)

这将替换所有非数字非点(.)字符。