itljl 发表于 2010-7-18 16:00:09

[已解决]有没有更好的办法格式化网页源码?

本帖最后由 itljl 于 2010-8-18 12:29 编辑

我们要将$string = '◇ <A href="http://bbs.cctv.com/read.php?tid=112869" target=main>中华人民共和国万岁</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112868" target=main>一切反动派都是纸老虎</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112867" target=main>社会主义比资本主义优越五倍</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112866" target=main>因为社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112865" target=main>为什么社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112864" target=main>因为社会主义比资本主义优越</A> <BR>'这样一串字符串格式化一个二维数组


我用的方法是:
#include <array.au3>

Global $NewPost



$string = '◇ <A href="http://bbs.cctv.com/read.php?tid=112869" target=main>中华人民共和国万岁</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112868" target=main>一切反动派都是纸老虎</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112867" target=main>社会主义比资本主义优越五倍</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112866" target=main>因为社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112865" target=main>为什么社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112864" target=main>因为社会主义比资本主义优越</A> <BR>'

;拆分得到的数据
$var = StringSplit($string, "◇")


For $i = 2 To $var
        ;MsgBox(0, 0, $var[$i])

        ;得到标题
        $Str_s = 'n>'
        $Str_e = '</'
        $sReturn_txt = StringRegExp($var[$i], $Str_s & '(.*)' & $Str_e, 3)
        ;MsgBox(0, 0, $sReturn_txt)

        ;得到URL
        $Str_s = '="'
        $Str_e = '" target'
        $sReturn_url = StringRegExp($var[$i], $Str_s & '(.*)' & $Str_e, 3)
        ;MsgBox(0, 0, $sReturn_url)


        ;将得到的标题和URL增加到二维数组中
        _ArrayAdd2($NewPost, $sReturn_txt, $sReturn_url)

Next

;显示得到的二维数据
_ArrayDisplay($NewPost)
哪位兄弟有更好,更简洁的方法吗?

3mile 发表于 2010-7-18 16:57:29

#include <array.au3>
$string = '◇ <A href="http://bbs.cctv.com/read.php?tid=112869" target=main>中华人民共和国万岁</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112868" target=main>一切反动派都是纸老虎</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112867" target=main>社会主义比资本主义优越五倍</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112866" target=main>因为社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112865" target=main>为什么社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112864" target=main>因为社会主义比资本主义优越</A> <BR>'
$Array=StringRegExp($string,'(?i)<A.*?<\/A>',3)
Local $Fin;根据正则整理定义数组
For $i=0 To UBound($Array)-1
        $SpliArray=StringRegExp($Array[$i],'<.*?>',3)
        $UrlArray=StringRegExp($SpliArray,'"[^"].*?"',3);明明指明了不包含双“”号的,怎么还有?
        $Fin[$i]=$UrlArray
        $Fin[$i]=StringRegExpReplace($Array[$i],'<.*?>','')       
Next
_ArrayDisplay($Fin)

afan 发表于 2010-7-18 17:16:47

#include <Array.au3>
Local $string = '◇ <A href="http://bbs.cctv.com/read.php?tid=112869" target=main>中华人民共和国万岁</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112868" target=main>一切反动派都是纸老虎</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112867" target=main>社会主义比资本主义优越五倍</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112866" target=main>因为社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112865" target=main>为什么社会主义有先进的文化,科技</A> <BR>◇ <A href="http://bbs.cctv.com/read.php?tid=112864" target=main>因为社会主义比资本主义优越</A> <BR>'
Local $sR = StringRegExp($string, 'href=\"(.+?)\".+?main>(.+?)</', 3)
Local $NewPost = []
For $i = 0 To UBound($sR) - 2 Step 2
        $NewPost[($i + 2) / 2] = $sR[$i + 1]
        $NewPost[($i + 2) / 2] = $sR[$i]
Next
_ArrayDisplay($NewPost)

itljl 发表于 2010-7-19 16:05:00


afan 发表于 2010-7-18 17:16 http://www.autoitx.com/images/common/back.gif


    谢谢分享新方法。

itljl 发表于 2010-7-19 16:05:10


3mile 发表于 2010-7-18 16:57 http://www.autoitx.com/images/common/back.gif


      谢谢分享新方法。
页: [1]
查看完整版本: [已解决]有没有更好的办法格式化网页源码?