ตอนที่ฉันเขียนโปรแกรมโมดูลอัพโหลด ZBlog วันนี้ ฉันจำเป็นต้องใช้รูทีนย่อยเพื่อแยกชื่อไฟล์ในบทความ ในตอนแรก ฉันซับซ้อนของปัญหาและจับคู่ชื่อไฟล์ที่เป็นไปได้ทั้งหมด ไม่เพียงแต่ฉันเขียนรายการนิพจน์ทั่วไปยาวๆ เท่านั้น แต่ยังแยกด้านล่างด้วย หลังจากทำงานมาเป็นเวลานาน ฉันก็ค้นพบว่าไฟล์ที่อัปโหลดทั้งหมดของ Z-Blog ถูกเก็บไว้ในการอัปโหลด และการจับคู่ที่ซับซ้อนจำนวนมากถูกเขียนขึ้นโดยเปล่าประโยชน์ - - เฮ้ มันไม่เสียเปล่า โพสต์ไว้จะดีกว่า เผื่อว่าพี่ชายคนไหนต้องการมันในอนาคต~~
กระบวนการย่อยต่อไปนี้ถือได้ว่าเป็นการจับคู่สากลที่ค่อนข้างดี (PS: จู่ๆ ฉันก็พบว่า CODE_LITE หนี UBB ของฉันไปแล้ว!!! เวียนหัว ฉันต้องหนีมันด้วยตัวเอง...)
-------------------------------------------------- -------------------------------------------------- ----------------------------------
Dim objRegExp,การแข่งขัน,i,DC9_DOT_CN_MATCH
Dim aryMatch()
Redim รักษา aryMatch(0)
ตั้งค่า objRegExp=RegExp ใหม่
objRegExp.IgnoreCase =จริง
objRegExp.Global=จริง
objRegExp.Pattern="(?:[[^]]+]([^[]+)[/[^]]+])|(?:(?:href|src) =([^s|^>]+)[""|>|s'])"
ตั้งค่าการจับคู่ = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Dim TmpMatch
สำหรับ i=0 ถึง Matches.Count-1
โทร InsertDataToArray (ตรงกัน (i). SubMatches (0), aryMatch)
โทร InsertDataToArray (ตรงกัน (i). SubMatches (1), aryMatch)
ถัดไป
สำหรับ i=0 ถึง Ubound(aryMatch)
หากไม่ใช่ IsNull(aryMatch(i)) และ Trim(aryMatch(i))<>"" จากนั้น Response.write aryMatch(i)&"<br>"
ถัดไป
InsertDataToArray (Data, ByRef aryMatch)
ถ้า Trim(Data)<>"" จากนั้น
ข้อมูล = แทนที่ (ข้อมูล "" "")
ข้อมูล=แทนที่(ข้อมูล,"""","")
ข้อมูล=แทนที่(ข้อมูล""/")
ข้อมูล=แยก(ข้อมูล"/")(Ubound(แยก(ข้อมูล"/")))
Redim รักษา aryMatch(Ubound(aryMatch)+1)
DC9_DOT_CN_MATCH=เท็จ
สำหรับ j=0 ถึง Ubound(aryMatch)
ถ้า aryMatch(j)=ข้อมูล แล้ว DC9_DOT_CN_MATCH=True
ต่อไป
ถ้าไม่ใช่ DC9_DOT_CN_MATCH ดังนั้น aryMatch(Ubound(aryMatch))=Data
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
------------------------------------------------ --------------------------------
จริงๆ แล้วสำหรับ Z-Blog ก็แค่ต้องตรงกับการอัพโหลด (แต่เพื่อประหยัดปัญหา , ฉัน และเพื่อให้แม่นยำยิ่งขึ้น ฉันเพียงเพิ่มการอัปโหลดลงในการจับคู่ด้านบน ดังนั้นดูเหมือนว่าสิ่งต่อไปนี้จะซับซ้อนกว่า ที่จริงแล้วสิ่งต่อไปนี้ควรจะง่ายกว่าในทางทฤษฎี ท้ายที่สุดแล้ว การอัปโหลดก็มีหน้าที่รับผิดชอบ .) เพียงเขียน SPLit /. ดังนี้:
-------------------------------------------------- -------------------------------------------------- ----------------------------------
หรี่ objRegExp, แมตช์, i, ZC_UPLOAD_MATCH
Dim aryMatch()
Redim รักษา aryMatch(0)
ตั้งค่า objRegExp=RegExp ใหม่
objRegExp.IgnoreCase =จริง
objRegExp.Global=จริง
objRegExp.Pattern = "(?:[[^]]+][^[]*อัพโหลด/([^[|^\|^/]+)[/[^ ]]+])|(?:(?:href|src)=""{0,1}[^s|^""|^>|^']*upload/([^s| ^>]+)[""|>|s'])"
ตั้งค่าการจับคู่ = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Data=Replace( ข้อมูล,"""","")
Redim รักษา aryMatch(Ubound(aryMatch)+1)
ZC_UPLOAD_MATCH=เท็จ
สำหรับ j=0 ถึง Ubound(aryMatch)
ถ้า aryMatch(j)=ข้อมูล แล้ว ZC_UPLOAD_MATCH=True
ต่อไป
ถ้าไม่ใช่ ZC_UPLOAD_MATCH ดังนั้น aryMatch(Ubound(aryMatch))=Data
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
ที่มา: http://www.dc9.cn/post/279.html