我想在字符串中显示第二个数字。
也许你有比我更好的想法。
从这个例子:
1 PLN = 0.07 Gold
我只想得到" 0.07"从那个字符串。 我从网页抓取中获取它,所以它将我作为一个字符串返回。
我遇到的问题如下。 "字符串中的第二个数字"可能是"。",没有它,可能只由一个数字ex组成。 " 1",或者两个" 12",可能有前导小数。 " 1.2",即使职位可能会发生变化,因为对于某些货币,我将拥有" 1 PLN"," 1 USD"对于其他人,我将拥有" 1 TW"。
所以我不能在位置上工作,我不能只提取数字(我在字符串的开头有" 1")我无法提取只有INT因为我也可能有小数...
所以这个字符串的唯一常量 - 我想(但如果你有更好的想法,请建议我) - 是我需要在字符串中找到的第二个数字。
我怎么能得到它? 对不起如果我不够清楚。
答案 0 :(得分:1)
如果它始终采用这种格式1 PLN = 0.07 Gold
你可以
$array = explode(" ", $string)
,然后使用
$number = $array[3]
尝试一下,让我知道它是否有效
答案 1 :(得分:1)
您可以使用简单的正则表达式模式来隔离所有数字,包括等号后的小数。
如果字符串具有相同的结构,则表示=
一个空格,然后是您所追求的数字。
=
- 匹配等号
\s
- 在
之后立即匹配空格字符
(\d*\.?\d*)
- 匹配任意数量的数字,后跟可选的句点.
,然后匹配任意数量的数字
$str = '1 PLN = 0.07 Gold';
preg_match('#=\s(\d*\.?\d*)#',$str,$matches);
print $matches[1];
将输出
0.07
无论您拥有之前 =
符号,这都有效。
答案 2 :(得分:1)
试试这个:
<?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"
}