这个html页面(PART CODE)有多个(a href =“https://twitter.com/$name) 我需要解析所有$ name并在页面中打印 我怎么能这样做?
<td>Apr 01 2011<br><b>527
</b>
</td>
<td>
<a href="https://twitter.com/al_rasekhoon" class="twitter-follow-button" data-show count="false" data-lang="" data-width="60px" > al_rasekhoon</a>
</td>
</tr>
<tr class="rowc"><td colspan="11"></td></tr>
答案 0 :(得分:2)
您需要遍历$ names数组并为该数组中的每个条目打印正确的a
标记。像这样:
<?php foreach($names as $name){ ?>
<a href="https://twitter.com<?php echo $name ?>"><?php echo $name ?></a>
<?php } ?>
答案 1 :(得分:0)
听起来像是屏幕抓取,你需要为此遍历DOM。 REs非常不可靠。
DOMDocument可能会对您有所帮助,但您可能需要查看用于屏幕抓取的库,例如BeautifulSoup(或某些PHP等价物)。
答案 2 :(得分:0)
如果我理解正确你从某个地方获取一个html页面并想要提取所有链接的Twitter用户?您可以解析html代码,也可以通过一些字符串拆分来完成此操作。这段代码未经测试,但应该给你一个想法:
$input = '(the html code)';
$links = explode('<a ', $input); //split input by start of link tags
for ($i = 0; $i < count($links); $i++) {
//cut off everything after the closing '>'
$links[$i] = explode('>', $links[$i], 2)[0]
//skip this link if it doesn't go to twitter.com
if (strpos($links[$i], 'href="twitter.com/') === False) { continue; }
//split by the 'href' attribute and keep everything after 'twitter.com'
$links[$i] = explode('href="twitter.com/', $links[$i], 2)[1]
//cut off everything after the " ending the href attribute
$links[$i] = explode('"', $links[$i], 2)[0]
//now $links[$i] should contain the twitter username
echo $links[$i]
}
注意:如果页面上有不是主页面的Twitter或用户的其他链接,它们也会被打印(例如,如果页面链接到推特常见问题解答)。您需要手动过滤它们。
php很糟糕,让我们在python中做到这一点!
input = '(the html code)'
links = [l.split(">", 1)[0] for l in input.split("<a ")}
twitter_links = [l for l in links if 'href="twitter.com/' in l]
twitter_hrefs = [l.split('href="twitter.com/', 1)[1] for l in twitter_links]
users = [l.split('"', 1)[0] for l in twitter_hrefs]
print '\n'.join(users)