首页 新闻 会员 周边 捐助

正则表达 获取html值

0
悬赏园豆:15 [已解决问题] 解决于 2013-03-21 15:40

跪求:

如何获取一个页面的某一个值,网页的源代码如何。我需要获取这个页面的值:631.01,(这个值也是经常变化的)下面红色字体标明;

请问用正则表达式怎么写。如果有其它的能够解析读取的方式。。谢谢!


<tr align="center">
<td bgcolor="#FFFFFF">港币</td>
<td bgcolor="#FFFFFF">81.06</td>
<td bgcolor="#FFFFFF">80.41</td>
<td bgcolor="#FFFFFF">81.37</td>
<td bgcolor="#FFFFFF">81.37</td>
<td bgcolor="#FFFFFF">81.78</td>
<td bgcolor="#FFFFFF">81.78</td>
<td bgcolor="#FFFFFF">2012-09-28</td>
<td bgcolor="#FFFFFF">09:49:39</td>
</tr>


<tr align="center">
<td bgcolor="#FFFFFF">美元</td>
<td bgcolor="#FFFFFF">628.49</td>
<td bgcolor="#FFFFFF">623.45</td>
<td bgcolor="#FFFFFF">631.01</td>
<td bgcolor="#FFFFFF">631.01</td>
<td bgcolor="#FFFFFF">634.1</td>
<td bgcolor="#FFFFFF">634.1</td>
<td bgcolor="#FFFFFF">2012-09-28</td>
<td bgcolor="#FFFFFF">09:49:39</td>
</tr>

panny的主页 panny | 初学一级 | 园豆:115
提问于:2012-09-28 10:30
< >
分享
最佳答案
0

大概是这样,.net没得测试,我看你回复了上面的,就仿他的写了,纯手写,你多点功夫测试测试了。^_^

Regex.Replace(string, "美元[\s\S]*?(<td[^<]*?</td>){3}<td[^>]*?>(.*?)</td>", "$2")

Zjmainstay | 菜鸟二级 |园豆:355 | 2012-09-28 11:56

美元[\s\S]*?(<td[^<]*?</td>)  这个表达式有值,但加上{3}后就匹配不了。

panny | 园豆:115 (初学一级) | 2012-09-28 17:47

@panny: 应该是受换行影响了,我用php测试成功了。加了[\s\S]*?清除换行。

<?php
    header("Content-type: text/html; charset=utf-8"); 
    $str = '
<tr align="center">
<td bgcolor="#FFFFFF">港币</td>
<td bgcolor="#FFFFFF">81.06</td>
<td bgcolor="#FFFFFF">80.41</td>
<td bgcolor="#FFFFFF">81.37</td>
<td bgcolor="#FFFFFF">81.37</td>
<td bgcolor="#FFFFFF">81.78</td>
<td bgcolor="#FFFFFF">81.78</td>
<td bgcolor="#FFFFFF">2012-09-28</td>
<td bgcolor="#FFFFFF">09:49:39</td>
</tr>


<tr align="center">
<td bgcolor="#FFFFFF">美元</td>
<td bgcolor="#FFFFFF">628.49</td>
<td bgcolor="#FFFFFF">623.45</td>
<td bgcolor="#FFFFFF">631.01</td>
<td bgcolor="#FFFFFF">631.01</td>
<td bgcolor="#FFFFFF">634.1</td>
<td bgcolor="#FFFFFF">634.1</td>
<td bgcolor="#FFFFFF">2012-09-28</td>
<td bgcolor="#FFFFFF">09:49:39</td>
</tr>';

preg_match('#美元[\s\S]*?(<td[^<]*?</td>[\s\S]*?){3}<td[^>]*?>(.*?)</td>#i',$str,$match);


var_dump($match);
//End_php
Zjmainstay | 园豆:355 (菜鸟二级) | 2012-09-29 10:09
其他回答(2)
0

php 用这个函数可以获去 preg_match_all('@<tr align="center"><td bgcolor="#FFFFFF">(.+)<\/td><\/tr>@isU',$value,$data);

收获园豆:15
lifeyun | 园豆:265 (菜鸟二级) | 2012-09-28 11:00
0

Regex.Replace(string, "<td[^<]*</td>", "")

田林九村 | 园豆:2367 (老鸟四级) | 2012-09-28 11:07

我只需要红色文字的值,你给的读取出来的只是数组。数组数量太多了

支持(0) 反对(0) panny | 园豆:115 (初学一级) | 2012-09-28 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册