正则表达式与PHP中的内容不匹配

正则表达式与PHP中的内容不匹配,php,regex,Php,Regex,我正在尝试抓取一个易趣页面,例如: 除了我的一个正则表达式与内容不匹配之外,其他一切都很好,因此匹配项没有被推送到$linksArray我已经输出了内容,以确保我尝试匹配的内容在那里是正确的-事实就是如此。然后我去打印($linksArray)所有匹配的地方。但事实并非如此。它是一个空的多维数组。您可以在这里看到我的现场示例: 以下是我的PHP代码: <?php echo '<form method="POST"> <input type="text" id="url"

我正在尝试抓取一个易趣页面,例如:

除了我的一个正则表达式与内容不匹配之外,其他一切都很好,因此匹配项没有被推送到
$linksArray
我已经输出了内容,以确保我尝试匹配的内容在那里是正确的-事实就是如此。然后我去打印($linksArray)所有匹配的地方。但事实并非如此。它是一个空的多维数组。您可以在这里看到我的现场示例:

以下是我的PHP代码:

<?php
echo '<form method="POST">
<input type="text" id="url" name="url" size="120" value="' . (isset($_REQUEST["url"]) && !empty($_REQUEST["url"]) ? $_REQUEST["url"] : "") . '"/>
<input type="submit" value="Submit" />
</form>';
flush();

if (isset($_REQUEST["url"]) && !empty($_REQUEST["url"])) {
    $url = $_REQUEST["url"];
    $phones = array();
    for ($page = 1; $page <= 1; $page++) {

        // get page contents

        $contents = file_get_contents($url . "&_pgn=" . $page);
        echo(htmlentities($contents));
        // find all links patterns
        // HERE IS THE PROBLEM
        $pattern = '/class="lvtitle"><a href="(.*)" class="vip"/';
        $linksArray = array();
        preg_match_all($pattern, $contents, $linksArray);
        print_r($linksArray);
        $links = $linksArray[0];

        foreach($links as $link) {
            $pureLink = str_replace("class=\"lvtitle\"><a href=\"", "", $link);
            $pureLink = str_replace("\" class=\"vip\"", "", $pureLink);

            // getting sub page contents

            $subContents = file_get_contents($pureLink);

            // find all links patterns

            $subContents = str_replace(" ", "", $subContents);
            $phonePattern = '/07[0-9]{9}/';
            $phonesArray = array();
            preg_match_all($phonePattern, $subContents, $phonesArray);
            foreach($phonesArray[0] as $element) {

                // check if phone not added previousely to the phones array

                if (!in_array($element, $phones)) {

                    // add it to the phones array

                    array_push($phones, $element);
                    echo $element . "<br />";
                    flush();
                }
            }
        }
    }

    // print results
    foreach($phones as $phone){
        echo $phone."<br/>";
    }

}

?>
此正则表达式适用于:

"/ class=\"lvtitle\"><a href=\"([^\"]*)\"  class=\"vip\"/"

“/class=\”lvtitle\“>您是否考虑过查看?不要使用regexp解析HTML,请使用
DOMDocument
。易趣服务条款状态您不得使用任何机器人、蜘蛛、刮板或其他自动方式出于任何目的访问我们的服务。或未经易趣和适当的第三方(如适用)事先明确书面许可,从我们的服务中复制、复制、反向工程、修改、创建衍生作品、分发或公开显示任何内容(您的信息除外);未经用户同意,获取或以其他方式收集用户信息,如电子邮件地址;所以我会考虑“哈姆扎制造并加入他们的DEV程序”。你打败了我,我只是想出了2个空间的东西。我建议使用
\s*
而不是硬编码空格数。如果在字符串周围使用单引号,则不需要转义regexp中的所有双引号,就像他在代码中所做的那样。