PHP如何获取字符串

时间:2016-03-17 09:56:43

标签: php string numbers


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

从这个例子:

1 PLN = 0.07 Gold

我只想得到" 0.07"从那个字符串。 我从网页抓取中获取它,所以它将我作为一个字符串返回。

我遇到的问题如下。 "字符串中的第二个数字"可能是"。",没有它,可能只由一个数字ex组成。 " 1",或者两个" 12",可能有前导小数。 " 1.2",即使职位可能会发生变化,因为对于某些货币,我将拥有" 1 PLN"," 1 USD"对于其他人,我将拥有" 1 TW"。

所以我不能在位置上工作,我不能只提取数字(我在字符串的开头有" 1")我无法提取只有INT因为我也可能有小数...

所以这个字符串的唯一常量 - 我想(但如果你有更好的想法,请建议我) - 是我需要在字符串中找到的第二个数字。

我怎么能得到它? 对不起如果我不够清楚。

3 个答案:

答案 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"
}