PHP 如何获取字符串中存在的第二个数字


PHP how to get the second number present in a string


我想在字符串中获取第二个数字。也许你有比我更好的想法。

从这个例子中:

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

无论您在=符号之前拥有什么,这都有效。