-2

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

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

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

4

3 回答 3

16

尽管这个问题的原始答案确实达到了预期的效果,但这并不是完成这个简单任务的最有效方法。如上面评论中所述,str_replace()在这种情况下首选使用 。

$variation = str_replace("+", "", $variation);

原始答案:

这仅用于删除加号:

$variation = preg_replace(/[+]/, "", $variation);

你可以在这里看到它的工作原理:http : //www.phpliveregex.com/p/1Fb(确保你选择了 preg_replace 函数)

于 2013-10-23T20:56:27.887 回答
6

+$7.99也许:

$string = ltrim($string, '+$');

或者,如果出于某种原因它们位于两端,请使用trim().

于 2013-10-23T21:14:41.987 回答
4

You really don't need regular expressions, given $value = '+$2.47';:

$value = (float) strtr($value, [
    '$' => '',
    '+' => '',
]);

var_dump($value); // double(2.47)

Note the (float) cast; I assume this may be advantageous seeing as you're working with numeric values.

Alternatively, if you're hell-bent on using preg_replace then match a negated class:

$value = (float) preg_replace('/[^0-9\.]/', '', $value);

var_dump($value); // double(2.47)

This will replace any non-numeric non-dot (.) characters.

于 2013-11-13T22:15:05.290 回答