繁体   English   中英

带有preg_match_all()的php不会产生任何结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM