我正在尝试使用从我的字符串preg_replace()
中删除一个加号 ( )。+
我用了
$variation = preg_replace('/[^\p{L}\p{N}\s]/u', '', $variation);
但这也删除了句点(.
),我在字符串中需要它。有没有办法只删除加号?
尽管这个问题的原始答案确实达到了预期的效果,但这并不是完成这个简单任务的最有效方法。如上面评论中所述,str_replace()
在这种情况下首选使用 。
$variation = str_replace("+", "", $variation);
原始答案:
这仅用于删除加号:
$variation = preg_replace(/[+]/, "", $variation);
你可以在这里看到它的工作原理:http : //www.phpliveregex.com/p/1Fb(确保你选择了 preg_replace 函数)
+$7.99
也许:
$string = ltrim($string, '+$');
或者,如果出于某种原因它们位于两端,请使用trim()
.
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.