【发布时间】:2013-01-23 02:45:09
【问题描述】:
我有大约 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')");
}
它完成这项工作并过滤所有以 _celebrity 结尾但输出未进入数据库的链接。所有链接都在一行中输入,它不是普通的,它是锚文本的形式,但我想要普通链接在数据库中,因为我正在使用 foreach,所以所有链接都应该在单独的行中输入,但所有行都在单行中输入,并且以锚点的形式输入,如 http://xyz.com/edje/jjeieied_celebrity">A</a>
但我只想要数据库中的链接
【问题讨论】:
-
您不应使用正则表达式来获取链接,而应使用 DOMDocument。请阅读:stackoverflow.com/questions/1732348/…
-
听起来像是一个贪婪的正则表达式的问题。你真的想要
href="(.*?_celebrity)",但是真的你最好使用适当的DOM解析器,比如DOMDocument或SimpleXML。 -
这听起来像是 Tony The Pony 的工作......或者更好的是,read this,它很好地解释了为什么你不应该尝试使用正则表达式解析 HTML。
标签: php regex preg-match