Php preg_match_all和regex

Php preg_match_all和regex,php,regex,preg-match,Php,Regex,Preg Match,我有一个页面,大约有10-15个链接在那里,所有链接都在我的控制下,并以一些单词结尾,比如名人,我想过滤所有以这个单词结尾的链接,所以我写了这个 $regex='|<a.*?href="(.*_celebrity)"|'; preg_match_all($regex,$result21,$parts); $links=$parts[0]; foreach($links as $link){ { echo $link."<br>"; mysql

我有一个页面,大约有10-15个链接在那里,所有链接都在我的控制下,并以一些单词结尾,比如名人,我想过滤所有以这个单词结尾的链接,所以我写了这个

    $regex='|<a.*?href="(.*_celebrity)"|';


    preg_match_all($regex,$result21,$parts);
$links=$parts[0];
foreach($links as $link){
{
    echo $link."<br>";
    mysql_query ("INSERT INTO tablea(linkssas) VALUES ('$link')");
    }
$regex='|


但我只需要数据库中的链接

您可能希望循环使用$parts[1],而不是$parts[0]


您可能希望循环使用$parts[1],而不是$parts[0]


我觉得有义务带你参观:

或者,使用而不是
getElementsByTagName

$xp = new DOMXPath($d);

foreach($xp->query('//a[substring(@href, string-length(@href) - 9) = "_celebrity"]') as $node) {
    echo $node->getAttribute('href');
}
下面是我们聊天室的信息:


。它们不再得到维护。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果您选择PDO,.

我觉得有义务带您参观:

或者,使用而不是
getElementsByTagName

$xp = new DOMXPath($d);

foreach($xp->query('//a[substring(@href, string-length(@href) - 9) = "_celebrity"]') as $node) {
    echo $node->getAttribute('href');
}
下面是我们聊天室的信息:


。它们不再得到维护。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果选择PDO,.

则不应使用正则表达式获取链接,而应使用DOMDocument。请阅读:听起来像是贪婪正则表达式的问题。你真的想要
href=“(.*u名人)”
,但实际上你最好使用一个合适的DOM解析器,比如DOMDocument或SimpleXML。这听起来像是小马托尼的工作。。。。。或者更好的是,它很好地解释了为什么不应该尝试使用正则表达式解析HTML。不应该使用正则表达式来获取链接,而应该使用域文档。请阅读:听起来像是贪婪正则表达式的问题。你真的想要
href=“(.*u名人)”
,但实际上你最好使用一个合适的DOM解析器,比如DOMDocument或SimpleXML。这听起来像是小马托尼的工作。。。。。或者更好的是,它很好地解释了为什么不应该尝试使用正则表达式解析HTML。我必须修改正则表达式,但在这种情况下使用正则表达式是一种不好的做法。使用mysql_query()也是不好的做法,我不得不修改正则表达式,但在这种情况下使用正则表达式是不好的做法。使用mysql_query()并使用bindParamOr使用PDO进行插入也是一种不好的做法,甚至xpath可能更好:@jack不工作,我正在尝试添加几行来回显$op7='.$link->getAttribute('href');echo$op7;并使用bindParamOr使用PDO进行插入,甚至xpath可能更好:@jack不工作我正在尝试添加这几行来回显$op7='.$link->getAttribute('href');echo$op7;