我正在尝试使用这个PHP脚本来查找来自雅虎财经的股票报价。我遇到的问题是,当脚本运行时,它不会产生任何结果。这让我相信我的正则表达式是不正确的,但是当我在myregextester.com上使用相同的正则表达式时,它会显示我对给定输入所期望的结果。任何帮助将不胜感激。此外,我的PHP可能不正确我正在尝试做什么。
<html>
<head>
<title>Stock Quote from Nasdaq</title>
</head>
<body>
<?php
// choose stock to look at
$symbol = 'AMZN';
echo "<h1> Stock Quote for $symbol </h1>";
//echo 'this printed (1)<br />';
$theurl = 'http://finance.yahoo.com/q?s=AMZN';
//echo 'this printed (2)<br />';
$contents = file_get_contents($theurl);
//find the part of the page we want and output it
if (preg_match_all('/amzn">([0-9]+\.[0-9]+)/', $contents, $matches)) {
echo "The price for $symbol: ".$matches[1][0];
} else {
echo "No Results";
}
?>
</body>
</html>
答案 0 :(得分:1)
您要搜索的是:
<span id="yfs_l10_amzn">221.37</span>
你的正则表达式会成功。
所以你的实际问题是检索页面。除了令人讨厌的$theurl
变量名称之外,您应该使用file_get_contents
代替fread
等。
$contents = file_get_contents($theurl);
在您的代码段中工作。
答案 1 :(得分:0)
我刚刚下载了网址http://finance.yahoo.com/q?s=AMZN并查看了网页来源。为/ amzn做了一次搜索。一场比赛。那是<a href="/marketpulse/AMZN">Market Pul....
因此没有匹配。
需要重新考虑。
答案 2 :(得分:0)
逃离&gt;
试试这个:
preg_match_all('/amzn"\>[0-9]+\.[0-9]+/',$contents, $matches);