我想在字符串中获取第二个数字。也许你有比我更好的想法。
从这个例子中:
1 PLN = 0.07 Gold
我只想从该字符串中获取"0.07"。我从网络抓取中获取它,因此它将我作为字符串返回。
我遇到的问题如下。"字符串中的第二个数字"可能带有".",没有它,可能仅由一个数字组成,例如"1",或者由两个"12"组成,可能有小数,例如"1.2",甚至位置可能会改变,因为对于某些货币,我将有"1 PLN","1 美元"对于其他货币,我将有"1 TW"。
所以我不能在位置上工作,我不能只提取数字(我在字符串的开头有"1"),我不能只提取 INT,因为我也可以有小数......
所以这个字符串的唯一常量——我想(但如果你有更好的想法,请建议我)——是我需要我在字符串中找到的第二个数字。
我怎么能得到它?对不起,如果我不够清楚。
试试这个:
<?php
$string = '1 PLN = 0.07 Gold';
$pattern = '/'d+'.'d+/';
$matches = array();
$r = preg_match($pattern, $string, $matches);
var_dump($matches); //$matches is array with results
输出:
array(1) {
[0]=>
string(4) "0.07"
}
如果它总是采用这种格式1 PLN = 0.07 Gold
$array = explode(" ", $string)
空格,然后得到所需的数字
$number = $array[3]
试试吧,让我知道它是否有效
您可以使用简单的正则表达式模式来隔离所有数字,包括等号后的小数(如果有)。
如果字符串具有相同的结构,则以下内容有效,这意味着一个=
一个空格,然后是你想要的数字。
=
- 匹配等号
's
- 紧跟在后面
匹配空格字符 ('d*'.?'d*)
- 匹配任意数量的数字,后跟可选的句点.
,然后匹配任意数量的数字
$str = '1 PLN = 0.07 Gold';
preg_match('#='s('d*'.?'d*)#',$str,$matches);
print $matches[1];
将输出
0.07
无论您在=
符号之前拥有什么,这都有效。