如何解决用于匹配锚标记的php正则表达式
| 转到此页面的来源:www.songs.pk/indian/7days.html 只会有八个以ѭ0开头的链接 例如:<a href=\"http://link1.songs.pk/song1.php?songid=2792\">Tune Mera Naam Liya</a>
我想要一个匹配的PHP正则表达式
http://link1.songs.pk/song1.php?songid=2792
和
Tune Mera Naam Liya
谢谢。
解决方法
最好使用诸如simplehtmldom之类的东西来查找所有链接,然后使用相关的HTML / href查找所有链接。
使用regex解析HTML并不总是最好的解决方案,就您而言,我认为这只会给您带来痛苦。
$href = \'some_href\';
$inner_text = \'some text\';
$desired_anchors = array();
$html = file_get_html (\'your_file_or_url\');
// Find all anchors,returns a array of element objects
foreach($html->find(\'a\') as $anchor) {
if ($a->href = $href && $anchor->innertext == $inner_text) {
$desired_anchors[] = $anchor;
}
}
print_r($desired_anchors);
那应该让您开始。
, 不要使用正则表达式伙伴! PHP为此提供了一个更合适的工具...
$dom = new DOMDocument;
$dom->loadHTML($str);
$matchedAnchors = array();
$anchors = $dom->getElementsByTagName(\'a\');
$match = \'http://link1\';
foreach($anchors as $anchor) {
if ($anchor->hasAttribute(\'href\') AND substr($anchor->getAttribute(\'href\'),strlen($match)) == $match) {
$matchedAnchors[] = $anchor;
}
}
, 干得好
preg_match_all(\'~<a .*href=\"(http://link1\\..*)\".*>(.*)</a>~Ui\',$str,$match,PREG_SET_ORDER);
print_r($match);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。