正则表达式与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中的所有双引号,就像他在代码中所做的那样。