preg_match_all - 需要一些帮助

时间:2012-01-24 20:56:04

标签: regex

如何使用preg_match_all从下面的标记中获取数字148.42?他们都有相同的课程,所以我不知道如何获得数字。

我有2个变量 - $ usd_kzt和$ eur_kzt,我需要在下面的代码中存储这两个变量中的数字值。

<td width="15"><input id="idval7" name="idval" class="idValI" value="5" type="checkbox"></td> <td class="gen7" align="left">&nbsp;1 ДОЛЛАР США</td>
<td class="gen7" align="center">USD / KZT</td>
<td class="gen7" align="center">148.42</td>

<td class="gen7" align="center">EUR / KZT</td>
<td class="gen7" align="center">200.42</td>
<td class="gen7" valign="middle" width="10" align="left">
<img src="images/whup.gif"></td>
<td class="gen7" align="center"></td>

尝试过这样的事情:

preg_match_all('/<td\s+.*?>(.*)<\/td>/is', $data, $matches);
print_r($matches); // returns nothing

提前致谢

2 个答案:

答案 0 :(得分:1)

试试这个:

preg_match_all('/<td[^>]*>(.*)<\/td>/', $data, $matches);

以下是print_r($matches)

的内容
Array
(
    [0] => Array
        (
            [0] => <td width="15"><input id="idval7" name="idval" class="idValI" value="5" type="checkbox"></td> <td class="gen7" align="left">&nbsp;1 ДОЛЛАР США</td>
            [1] => <td class="gen7" align="center">USD / KZT</td>
            [2] => <td class="gen7" align="center">148.42</td>
            [3] => <td class="gen7" align="center">EUR / KZT</td>
            [4] => <td class="gen7" align="center">200.42</td>
            [5] => <td class="gen7" align="center"></td>
        )

    [1] => Array
        (
            [0] => <input id="idval7" name="idval" class="idValI" value="5" type="checkbox"></td> <td class="gen7" align="left">&nbsp;1 ДОЛЛАР США
            [1] => USD / KZT
            [2] => 148.42
            [3] => EUR / KZT
            [4] => 200.42
            [5] => 
        )

)

如您所见,您可以轻松获取数据:

echo $matches[1][2]; // logs "148.42"

答案 1 :(得分:1)

如果您只想要这些数字,可以尝试以下方法:

preg_match_all('/(?:>)(\d+\.?\d*)(?:<)/', $str, $matches);

它只查找表格中的数字

$matches带回来

Array
(
    [0] => Array
        (
            [0] => >148.42<
            [1] => >200.42<
        )
    [1] => Array
        (
            [0] => 148.42
            [1] => 200.42
        )
)