[已解决]有没有更好的办法格式化网页源码?
本帖最后由 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)
哪位兄弟有更好,更简洁的方法吗? #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) #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)
afan 发表于 2010-7-18 17:16 http://www.autoitx.com/images/common/back.gif
谢谢分享新方法。
3mile 发表于 2010-7-18 16:57 http://www.autoitx.com/images/common/back.gif
谢谢分享新方法。
页:
[1]