解析HTML代码并打印出来

时间:2012-09-09 08:28:46

标签: php html

这个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>

3 个答案:

答案 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)