我的文字字符串可能包含以下格式:
现在是39.95英镑只有29.00英镑
OR
是0.95p现在是10p
从每个字符串中提取两个数字的最简单方法是什么,所以我可以稍后再减去它们。
答案 0 :(得分:1)
您可以使用如下的正则表达式:
/\d+(\.\d+)?/
要小心,因为这不会读取单位,因此如果出现以下情况,您很容易就会出错:
Was £2 Now Only 99p
您可能还需要注意文本字符串中的逗号。请注意,此处还存在您应该了解的国际化问题。许多国家/地区使用,
作为小数点分隔符,使用.
作为千位分隔符。您可以从货币猜测区域设置(例如,£表示小数点分隔符为.
)。
如果您可以更准确地了解您的计划必须接受哪种价值,那么您可能会得到更好的答案。
答案 1 :(得分:1)
这种怪异将捕获由文本分隔的两个数字。它还将捕获单位。
$match = preg_match("/((?:£)?(\d+(?:\.\d+)?)(?:p)?)[a-z\s]*((?:£)?(\d+(?:\.\d+)?)(?:p)?)/i", "Was £39.95 Now Only 99p");
print_r($matches);
这将产生:
Array ( [0] => Was £39.95 Now Only 99p [1] => £39.95 [2] => 39.95 [3] => 99p [4] => 99 )