找到符号首次出现的最接近的数字

时间:2009-06-15 12:08:16

标签: php

<?php
$url = 'here i give a url';

$raw = file_get_contents($url);

preg_match('/\w(\d*).*?\$/',$raw,$matches);


echo $matches;
?>

在给定的外部网站中,我需要最接近数字到符号的首次出现,此处符号为$

这是我现在尝试的,我只是打印“阵列”

4 个答案:

答案 0 :(得分:2)

如果您给出以下输入,我是否正确解释您的问题:

<div>
   <span>12.92$</span>
   <span>24.82$</span>
</div>

想要回到12.92 $?即你想要从网站上第一次出现一笔钱吗?

如果是,请尝试以下操作:

// Will find any number on the form xyz.abc.
// Will NOT cope with formatting such as 12 523.25 or 12,523.25
$regex = '/(\d+(:?.\d+)?) *([$])/'
preg_match($regex, $website, $matches);

//matches[0] => 123.45$
//matches[1] => 123.45
//matches[2] => $

另一个更雄心勃勃的尝试(可能更经常失败)将是:

// Will find any number on the form xyz.abc.
// Attempts to cope with formatting such as 12 523.25 or 12,523.25
$regex = '/(\d{1,3}(:?[, ]?\d{3})*(:?.\d+)?) *([$])/'
preg_match($regex, $website, $matches);

//matches[0] => 12 233.45$
//matches[1] => 12 233.45
//matches[2] => $

答案 1 :(得分:0)

如果你打印阵列&gt;尝试echo $ matches [0];或echo $ matches [1];

// update

// test2.php lkadf $ lksajdf;

// test.php     

$url = 'test2.php';
$raw = file_get_contents($url);

preg_match('/\w(\d*).*?\$/',$raw,$matches);

echo $matches[0]; ?>

将输出:

lkadf $(第一部分)。

答案 2 :(得分:0)

使用preg匹配$ matches [1],但您需要将正则表达式更改为

preg_match('/\w(\d+).*?\$/',$raw,$matches);

当你真正想要至少一个数字时,*匹配零次或多次。将其更改为+,以便匹配一个或多个。

答案 3 :(得分:0)

$regex = '/([$])* (\d+(:?.\d+)?)    /' ;
preg_match($regex, $str, $matches);

它的工作原理我只需转换成199美元!

现在我还需要一个只获得第二个外表的选项:

code .....
$199 ......

....
$299
....

匹配[2]应打印299