问题描述
|
转到此页面的来源: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);