Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
楼主: alanlai12345
打印 上一主题 下一主题

【疑问】Dreamweaver - How to retrieve data from another website?

 关闭 [复制链接]

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

31#
发表于 2010-10-30 01:21 AM |只看该作者
tomato兄,有些问题,
请问get_content之后,我们必须把拿到的内容换成其它格式才能搜索吗?从FTP里,也没有看到新的文件。。。
请问preg_match function里,如果我们要match nestle的股价的话,是不是要去match这个才能拿到股价?
  • <span id="yfs_l10_4707.kl">

复制代码


"The Preg_Match PHP function is used to search a string, and return a 1 or 0. If the search was successful a 1 will be returned, and if it was not found a 0 will be returned"

*p/s:已经get到content和用echo证实了得到的content。但是得到的是整个网页的content。
alanlai12345 发表于 2010-10-29 11:11 PM


取得的當然是該網址的所有内容啊,所以接下来你要對 html 有些認知
看看一下你可以發現到你所要的資料都以放在 table 標簽中,那你就需要使用 preg_match_all 取出所有的 table 標簽。
如果根据正确的搜索条件并成功取得所有 table 之後,你就可以使用循环再對所有 table 做进一步的 preg_match 判断 table 中是否有其独特的某些关键字 (如:yfs_l10_4707.kl)


所以你已經會取得指定的網址内容後你所要了解的是

1. preg_match_all 和 preg_match 的 "Return Value" 与 "Parameters" 用法
2. preg_match & preg_match_all 的第一 parameter 所需的 Regular Expression 用法

第二點也許在你了解符号的意义之後就要多 google 一下其他不同網站的例子与說明才比較容易掌握,這點需要些時間和耐性。當然也可以搜索一下看看有没有现成的 RE 例子說明,也好方便你馬上套用。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

32#
发表于 2010-10-30 01:32 AM |只看该作者
*p/s:已经get到content和用echo证实了得到的content。但是得到的是整个网页的content...
  • <?php
  • $homepage = file_get_contents("http://finance.yahoo.com/q/ta?s=4707.KL+Basic+Tech.+Analysis&t=3m") ;
  •         if ($homepage === false)
  •                 {        echo "content not found";
  •                         }
  •         else {preg_match("/yfs_l10_4707/", $homepage)
  •                         echo $homepage;
  •                         }

复制代码


alanlai12345 发表于 2010-10-29 11:11 PM


開始是没错但 else 之後有點问题了

else
{
    if( preg_match("/yfs_l10_4707/", $homepage) )   //這里你没加上判断 preg_match 是否找到符合的条件
    {
             echo $homepage;   //這里找到之後你也只是把第一行所取得的所有内容輸出,没什么意义,所以你要了解 preg_match / preg_match_all 的第三参數用法
    }
}


回复

使用道具 举报

6

主题

0

好友

397

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

33#
发表于 2010-10-30 01:41 AM |只看该作者
如果你只是 preg_match(a,b), 那么就会返回1或0,但是如果你preg_match(a,b,c),那么就会以array的形式把找到的内容存入变量c.
你的目标是要把位于 <span id="yfs_l10_4707.kl"> 与 </span> 之间的数据抓出来: <span id="yfs_l10_4707.kl">???</span>
我们使用 (.+) 来表示我们要的数据位置 <span id="yfs_l10_4707.kl">(.+)</span> ,然后我们就可以preg_match了
这里要注意的是,我们必须在 " / 之前输入一个 \ 符号 (原因请google)


回复

使用道具 举报

23

主题

5

好友

4778

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

34#
发表于 2010-10-30 01:42 AM |只看该作者
bursa的案子我之前有弄过,如果你嫌麻烦而有跟你customer收费的话,直接去拿个api code就可以了,example tdmberhad.com.my , 纯html file来的,来个plugin 就行了,不过就学不到以上大侠们所教导的一切。。你自己参考下


回复

使用道具 举报

2

主题

0

好友

39

积分

初级会员

Rank: 1

35#
发表于 2010-10-31 11:57 AM |只看该作者
本帖最后由 alanlai12345 于 2010-10-31 03:48 PM 编辑
如果你只是 preg_match(a,b), 那么就会返回1或0,但是如果你preg_match(a,b,c),那么就会以array的形式把找到的内容存入变量c.
你的目标是

可以帮我看看这个preg_match_all的function吗?

  1. <?php
  2. $homepage = file_get_contents("http://finance.yahoo.com/q/ta?s=4707.KL+Basic+Tech.+Analysis&t=3m") ;
  3.         if ($homepage === false)
  4.           {          echo "content not found";
  5.                 }
  6.         else {preg_match_all("/(<span id="yfs_l10_4707.kl">)(.*)(</span>)/", $homepage, $array)
  7.                   print "Nestle: $array"
  8.                }
复制代码


回复

使用道具 举报

6

主题

0

好友

397

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

36#
发表于 2010-10-31 05:25 PM |只看该作者
回复 35# alanlai12345

(<span id="yfs_l10_4707.kl">)(.*)(</span>)这里有问题, <span ...> 和 </span>  都不需要() , 还有就是  "  和 / 前面必须加上一个 \ 符号

print "Nestle: $array" 这里也是有问题, 如果有match到的话,$array里就会有两条数句, $array[0] 将会是 <span.....>xxx</span>, 而$array[1]才是你要的数据 xxx
所以应该是  print "Nestle: $array[1]"


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

37#
发表于 2010-10-31 06:36 PM |只看该作者
如果只要列出所有的 array 做检查可以使用 print_r


回复

使用道具 举报

2

主题

0

好友

39

积分

初级会员

Rank: 1

38#
发表于 2010-10-31 10:09 PM |只看该作者
本帖最后由 alanlai12345 于 2010-10-31 10:11 PM 编辑
还有就是  "  和 / 前面必须加上一个 \ 符号


weeming21兄,我试了很久,还是不行,你能不能给一个sample让我看看?
  1. <?php
  2. $homepage = file_get_contents("http://finance.yahoo.com/q/ta?s=4707.KL+Basic+Tech.+Analysis&t=3m") ;if ($homepage === false)
  3. {        echo "content not found";
  4.         }
  5. else {
  6.         preg_match_all( "/<span id="yfs_l10_4707.kl">(.*)</span>/", $homepage, $array)
  7.         print "Nestle: $array[1]"
  8.         }
复制代码


回复

使用道具 举报

6

主题

0

好友

397

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

39#
发表于 2010-10-31 10:25 PM |只看该作者
<span id="yfs_l10_4707.kl">(.*)</span> 里的  "  和 / 符号前面必须加上一个 \ 符号
example: .....\".....\".......\/....


回复

使用道具 举报

2

主题

0

好友

39

积分

初级会员

Rank: 1

40#
发表于 2010-10-31 10:52 PM |只看该作者
本帖最后由 alanlai12345 于 2010-10-31 10:56 PM 编辑

回复 39# weeming21
  1. preg_match_all ( "<span id=\"yfs_l10_4707.kl\">(.*)<\/span>", $homepage, $array)
复制代码
是这样吗?还是没有preg_match.....找了很久


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-10-25 12:23 PM , Processed in 0.106168 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部