[英]php with preg_match_all() generates no results
我正在尝试使用此php脚本来查找来自Yahoo Finance的股票报价。 我遇到的问题是,脚本运行时不会生成任何结果。 这使我相信我的正则表达式是不正确的,但是当我在myregextester.com上使用相同的regex时,它会显示给定输入所期望的结果。 任何帮助将不胜感激。 另外,我的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>
您要搜索的是:
<span id="yfs_l10_amzn">221.37</span>
您的正则表达式将为此成功。
因此,您的实际问题是检索页面。 除了令人讨厌的$theurl
变量名之外,您应该只使用file_get_contents
而不是fread
等。
$contents = file_get_contents($theurl);
在您的代码段中工作过。
我刚刚下载了URL http://finance.yahoo.com/q?s=AMZN并查看了页面源代码。 对/ amzn进行了搜索。 一场比赛。 那是<a href="/marketpulse/AMZN">Market Pul....
因此没有匹配项。
需要重新考虑。
转义>
尝试这个:
preg_match_all('/amzn"\>[0-9]+\.[0-9]+/',$contents, $matches);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.