php с preg_match_all () не дает результатов - PullRequest
0 голосов
/ 06 октября 2011

Я пытаюсь использовать этот php-скрипт, чтобы найти котировки акций yahoo finance. У меня проблема в том, что когда скрипт запускается, он не дает результатов. Это заставляет меня полагать, что мое регулярное выражение неверно, но когда я использую то же регулярное выражение на 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>

Ответы [ 3 ]

1 голос
/ 06 октября 2011

То, что вы ищете, это:

 <span id="yfs_l10_amzn">221.37</span>

Для этого будет успешно выполнено ваше регулярное выражение.

Таким образом, ваша настоящая проблема - получение страницы.Помимо отвратительного имени переменной $theurl, вы должны просто использовать file_get_contents вместо fread и т. Д.

 $contents = file_get_contents($theurl);

Работает в вашем фрагменте.

0 голосов
/ 06 октября 2011

Escape>

попробуйте это:

preg_match_all('/amzn"\>[0-9]+\.[0-9]+/',$contents, $matches);
0 голосов
/ 06 октября 2011

Я только что скачал URL http://finance.yahoo.com/q?s=AMZN и посмотрел на источник страницы.Сделал поиск для / амзн.Один матчЭто было <a href="/marketpulse/AMZN">Market Pul.... Следовательно, нет совпадения.

Нужно переосмыслить.

...