แนะนำ: ส่งออกไฟล์ excel ในโปรแกรมการแยกวิเคราะห์ ASP อินสแตนซ์ วิธีหนึ่งในการใช้ Excel ใน ASP คือการเชื่อมโยงไฟล์ Excel เป็นฐานข้อมูลและการดำเนินการคล้ายกับการดำเนินการฐานข้อมูลการเข้าถึง แต่วิธีนี้ไม่ได้มีประโยชน์เสมอไปควรเป็นไปได้ว่า Excel ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์ สำหรับรูปแบบคงที่
regexp คืออะไรใน ASP
'ชื่อตรวจสอบชื่อ
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ชื่อฟังก์ชั่นสาธารณะ (STR) checkName = true Dim Rep, Pass ตั้งค่า rep = ใหม่ regexp 'สร้างนิพจน์ทั่วไป rep.global = true 'ตั้งค่าความพร้อมใช้งานทั่วโลก rep.ignorecase = true 'ตั้งค่าว่าจะแยกแยะตัวละครที่ไวต่อตัวอักษร 'โหมดตั้งค่า Rep.Pattern = [U0009U0020U0022-U0028U002C-U002EU003A-U003FU005BU005CU0060U007CU007EU00FUFUE5E5 ตั้งค่า pass = rep.execute (str) 'ทำการค้นหานิพจน์ปกติในสตริงที่ระบุ ถ้า pass.count <> 0 แล้ว checkName = false 'Response.write (CheckName) 'response.end () ตั้งค่าตัวแทน = ไม่มีอะไร ฟังก์ชันสิ้นสุด |
เมื่อเราสร้างเว็บไซต์โดยเฉพาะเว็บไซต์อีคอมเมิร์ซหลายแห่งก่อนอื่นเราจะขอให้ผู้ใช้กรอกแบบฟอร์มเพื่อรับข้อมูลต่าง ๆ เกี่ยวกับผู้ใช้ที่ลงทะเบียนเนื่องจากผู้ใช้อาจป้อนข้อมูลต่าง ๆ และข้อมูลบางอย่างที่ไม่ตรงตามข้อกำหนด ดังนั้นก่อนที่จะบันทึกข้อมูลนี้ลงในฐานข้อมูลเว็บไซต์เราต้องตรวจสอบความถูกต้องตามกฎหมายของการป้อนข้อมูลโดยผู้ใช้เหล่านี้เพื่อให้โปรแกรมที่ตามมาสามารถดำเนินการได้อย่างปลอดภัยและราบรื่น ดังนั้นเรามักจะเขียนโปรแกรมการตรวจสอบ ASP บนแบ็กเอนด์เพื่อวิเคราะห์ว่าข้อมูลที่ป้อนโดยผู้ใช้นั้นถูกกฎหมายหรือไม่
บางคนอาจถามไม่สามารถใช้ JavaScript ที่ทำงานบนไคลเอนต์เพื่อตรวจสอบข้อมูลผู้ใช้ได้ดีขึ้นและเร็วขึ้น? แน่นอนว่านี่เป็นเรื่องปกติในกรณีส่วนใหญ่ทำไมในกรณีส่วนใหญ่? เนื่องจากจาวาสคริปต์ที่คุณเขียนอาจไม่ปกติอย่างสมบูรณ์ในการทำงานบน IE และ Netscape ในเวลาเดียวกันเนื่องจาก JScript ของ Microsoft ไม่เหมือนกันกับ JavaScript และเบราว์เซอร์บางตัวไม่สามารถใช้งานได้กับ Microsoft และ Netscape โปรแกรม ASP ทำงานบนฝั่งเซิร์ฟเวอร์ แต่เกี่ยวข้องกับสภาพแวดล้อมของเซิร์ฟเวอร์ของคุณ ไม่ว่าลูกค้าจะเป็นเบราว์เซอร์อะไรไม่มีความแตกต่างสำหรับโปรแกรม ASP ของคุณดังนั้นการเลือกใช้โปรแกรมแบ็กเอนด์ ASP เพื่อตรวจสอบความถูกต้องตามกฎหมายของข้อมูลเป็นตัวเลือกที่ดี
เมื่อใช้ ASP เพื่อตรวจสอบความถูกต้องของข้อมูลของแบ็กเอนด์บางคนได้เขียนฟังก์ชั่นมากมายเพื่อนำไปใช้เพื่อตอบสนองการตรวจสอบข้อมูลในสภาพแวดล้อมที่แตกต่างกัน ตัวอย่างเช่นหากเราต้องการตรวจสอบว่าที่อยู่ URL ที่ป้อนโดยผู้ใช้นั้นถูกกฎหมายหรือไม่เราสามารถเขียนรหัสชิ้นหนึ่งเพื่อวิเคราะห์ข้อมูลที่ป้อนโดยอักขระผู้ใช้ทีละตัว หากปริมาณข้อมูลที่จะวิเคราะห์มีขนาดเล็กจะง่ายต่อการจัดการ หากเงื่อนไขการวิเคราะห์เปลี่ยนไปมันจะน่าสังเวช ไม่เพียง แต่เราจะต้องเขียนโค้ดที่ยาวและยุ่งยาก แต่ประสิทธิภาพการดำเนินงานต่ำมาก มีทางออกที่ดีหรือไม่? ใช่นั่นคือวัตถุนิพจน์ทั่วไปที่จัดทำโดย vbscriptp5.0 ตราบใดที่เซิร์ฟเวอร์ของคุณติดตั้ง IE5.X มันจะนำ VBScript5.0 ในความเป็นจริงการแสดงออกปกติได้รับการจดสิทธิบัตรภายใต้ UNIX โดยเฉพาะอย่างยิ่งในภาษา Perl มันเป็นเพราะฟังก์ชั่นที่ทรงพลังของการแสดงออกปกติที่ Microsoft ค่อยๆพอร์ตวัตถุนิพจน์ทั่วไปไปยังระบบหน้าต่างและใช้มัน
สำหรับวัตถุนิพจน์ทั่วไปเราสามารถตรวจสอบความถูกต้องตามกฎหมายของข้อมูลต่าง ๆ ได้อย่างง่ายดาย
ก่อนอื่นมาทำความเข้าใจว่าวัตถุนิพจน์ทั่วไปของ VBScript คืออะไร ก่อนอื่นดูโปรแกรม:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ฟังก์ชั่น checkexp (patrn, strng) Dim Regex, Match 'สร้างตัวแปร ตั้งค่า regex = ใหม่ regexp 'สร้างนิพจน์ทั่วไป regex.pattern = โหมด Set Patrn ' regex.ignorecase = true 'ตั้งค่าไม่ว่าจะเป็นตัวละครที่อ่อนไหวหรือไม่ regex.global = true 'ตั้งค่าความพร้อมใช้งานทั่วโลก matches = regex.test (strng) 'ทำการค้นหา checkexp = จับคู่ ฟังก์ชันสิ้นสุด |
ในโปรแกรมนี้เราจะเห็นว่า regexp ใหม่สามารถใช้เพื่อรับวัตถุนิพจน์ทั่วไปจากนั้นวัตถุจะได้รับการกำหนดเทมเพลตการจับคู่ปกตินั่นคือบอกวัตถุนิพจน์ทั่วไปว่าเทมเพลตชนิดใดที่คุณต้องการจับคู่แล้วใช้วิธีการทดสอบเพื่อตรวจจับว่าข้อมูลที่จะประมวลผลตรงกับเทมเพลตที่เราให้ หากไม่ตรงกันนั่นหมายความว่าข้อมูลที่จะประมวลผลไม่ใช่ข้อมูลทางกฎหมายซึ่งตระหนักถึงการตรวจสอบความถูกต้องตามกฎหมายของข้อมูล เราจะเห็นได้ว่าการใช้เทมเพลตการจับคู่ที่ออกแบบอย่างเหมาะสมเราสามารถตรวจสอบข้อมูลชุดข้อมูลในรูปแบบได้อย่างง่ายดาย
อย่างไรก็ตามวัตถุนิพจน์ทั่วไปใน VBScript 5.0 มีวิธีการและคุณสมบัติอื่น ๆ อีกมากมายเช่นวิธีการแทนที่ () การใช้มันเราสามารถใช้ฟอรัมสไตล์ UBB ที่ทันสมัยและ BBS ออนไลน์ได้อย่างรวดเร็ว นี่ไม่ได้อยู่ในขอบเขตการสนทนาของเรา เราจะหารือในภายหลัง ลองมาดูวิธีการและคุณสมบัติที่ใช้กันทั่วไปของวัตถุนิพจน์ทั่วไปในการตรวจสอบข้อมูล:
วิธีการทั่วไป: ดำเนินการวิธีการ
คำอธิบาย: ทำการค้นหานิพจน์ปกติในสตริงที่ระบุ
ไวยากรณ์: object.execute (สตริง) ไวยากรณ์ของวิธีการดำเนินการรวมถึงส่วนต่อไปนี้:
วัตถุ: จำเป็น ชื่อของวัตถุ regexp เสมอ
สตริง: จำเป็น สตริงข้อความที่จะดำเนินการนิพจน์ทั่วไป
คำอธิบาย: รูปแบบการออกแบบของการค้นหานิพจน์ทั่วไปถูกตั้งค่าผ่านรูปแบบของวัตถุ regexp วิธีการดำเนินการส่งคืนไฟล์
การจับคู่คอลเลกชันที่มีวัตถุจับคู่แต่ละรายการที่พบในสตริง หากไม่พบการจับคู่ให้ดำเนินการส่งคืนคอลเลกชันการจับคู่ที่ว่างเปล่า
วิธีทดสอบ
คำอธิบาย: ทำการค้นหานิพจน์ปกติในสตริงที่ระบุและส่งคืนค่าบูลีนที่ระบุว่าพบรูปแบบการจับคู่หรือไม่
ไวยากรณ์: object.test (สตริง)
ไวยากรณ์ของวิธีการทดสอบรวมถึงส่วนต่อไปนี้:
วัตถุ: จำเป็น ชื่อของวัตถุ regexp เสมอ
สตริง: จำเป็น สตริงข้อความเพื่อทำการค้นหานิพจน์ทั่วไป
หมายเหตุ: รูปแบบที่แท้จริงของการค้นหานิพจน์ทั่วไปถูกตั้งค่าผ่านคุณสมบัติรูปแบบของวัตถุ Regexp คุณสมบัติ regexp.global ไม่มีผลต่อวิธีการทดสอบ หากพบรูปแบบการจับคู่วิธีการทดสอบจะกลับมาเป็นจริง มิฉะนั้นจะส่งคืนเท็จ
คุณสมบัติทั่วไป: คุณสมบัติทั่วโลก
คำอธิบาย: ตั้งค่าหรือส่งคืนค่าบูลีนที่ระบุว่ารูปแบบตรงกับรูปแบบทั้งหมดหรือเฉพาะในระหว่างสตริงการค้นหาทั้งหมด
ไวยากรณ์: object.global [= true | เท็จ ]
พารามิเตอร์วัตถุเป็นวัตถุ regexp เสมอ หากการค้นหาถูกนำไปใช้กับสตริงทั้งหมดคุณสมบัติทั่วโลกมีค่าของจริงมิฉะนั้นค่าของมันจะเป็นเท็จ การตั้งค่าเริ่มต้นเป็นจริง
แอตทริบิวต์ไม่รู้
คำอธิบาย: ตั้งค่าหรือส่งคืนค่าบูลีนระบุว่าการค้นหาโหมดนั้นมีความละเอียดอ่อน
ไวยากรณ์: object.ignorecase [= true | เท็จ ]
พารามิเตอร์วัตถุเป็นวัตถุ regexp เสมอ หากการค้นหาเป็นกรณีที่มีความละเอียดอ่อนคุณสมบัติที่ไม่รู้จะเป็นเท็จ มิฉะนั้นจริง ค่าเริ่มต้นเป็นจริง
คุณสมบัติรูปแบบ
คำอธิบาย: ตั้งค่าหรือส่งคืนรูปแบบการแสดงออกปกติที่กำลังค้นหา นี่คือแอตทริบิวต์ที่สำคัญที่สุดและเราตั้งค่าแอตทริบิวต์นี้เป็นหลักเพื่อให้บรรลุการตรวจสอบข้อมูล
ไวยากรณ์: object.pattern [= SearchString]
ไวยากรณ์ของคุณสมบัติรูปแบบมีส่วนต่อไปนี้:
วัตถุ: จำเป็น ตัวแปรวัตถุ regexp เสมอ
SearchString: เป็นทางเลือก นิพจน์สตริงปกติที่ถูกค้นหา มันอาจมีอักขระนิพจน์ทั่วไปที่ตั้งอยู่ในตารางบางส่วน
การตั้งค่า: อักขระและลำดับพิเศษจะใช้เมื่อเขียนรูปแบบสำหรับการแสดงออกปกติ ตารางต่อไปนี้อธิบายถึงอักขระและลำดับที่สามารถใช้และให้ตัวอย่าง
คำอธิบายตัวละคร: ทำเครื่องหมายอักขระถัดไปเป็นอักขระพิเศษหรือค่าตัวอักษร ตัวอย่างเช่น n ตรงกับอักขระ n N จับคู่การแบ่งบรรทัด ลำดับ/การจับคู่ (จับคู่
^: จับคู่ตำแหน่งเริ่มต้นของอินพุต
$: ตรงกับจุดสิ้นสุดของอินพุต
*: จับคู่อักขระก่อนหน้าเป็นศูนย์หรือหลายครั้ง ตัวอย่างเช่น Zo* สามารถจับคู่ Z และ Zoo
: จับคู่อักขระก่อนหน้าหนึ่งครั้งหรือมากกว่า ตัวอย่างเช่น ZO สามารถจับคู่สวนสัตว์ได้ แต่ไม่ใช่ Z
?: จับคู่อักขระก่อนหน้าเป็นศูนย์หรือหนึ่งครั้ง ตัวอย่างเช่น? ve? สามารถจับคู่ได้ในไม่เคย
.: จับคู่อักขระใด ๆ นอกเหนือจากการแบ่งบรรทัด
(รูปแบบ) จับคู่รูปแบบและจดจำการแข่งขัน สตริงย่อยที่ตรงกันสามารถรับได้จากคอลเลกชันการจับคู่ผลลัพธ์โดยใช้รายการ [0] ... [n] หากคุณต้องการจับคู่อักขระวงเล็บ (และ) คุณสามารถใช้ (หรือ)
x | y: จับคู่ x หรือ y ตัวอย่างเช่น Z | อาหารสามารถจับคู่ z หรืออาหาร (z | f) OOD ตรงกับสวนสัตว์หรืออาหาร
{n}: n เป็นจำนวนเต็มที่ไม่เป็นลบ ตรงกับ N Times ตัวอย่างเช่น O {2} ไม่สามารถจับคู่ o ใน BOB ได้ แต่สามารถจับคู่สอง o แรกใน foooood
{n,}: n เป็นจำนวนเต็มที่ไม่เป็นลบ จับคู่อย่างน้อย n ครั้ง ตัวอย่างเช่น o {2,} ไม่ตรงกับ o ใน BOB แต่ทั้งหมดใน foooood o {1,} เทียบเท่ากับ o o {0,} เทียบเท่ากับ o*
{n, m}: m และ n เป็นจำนวนเต็มที่ไม่เป็นลบ จับคู่อย่างน้อย n ครั้งสูงสุด m ตัวอย่างเช่น O {1,3} ตรงกับระบบปฏิบัติการสามตัวแรกใน Fooooood o {0,1} เทียบเท่ากับ o?
[XYZ]: ชุดอักขระ ตรงกับหนึ่งในตัวละครในวงเล็บ ตัวอย่างเช่น [ABC] ตรงกับ A ในธรรมดา
[^xyz]: ชุดอักขระเชิงลบ จับคู่อักขระใด ๆ ที่ไม่ได้อยู่ในวงเล็บนี้ ตัวอย่างเช่น [^abc] สามารถจับคู่ p ในแบบธรรมดา
[AZ]: แสดงถึงตัวละครในช่วงที่กำหนด จับคู่อักขระใด ๆ ภายในช่วงเวลาที่กำหนด ตัวอย่างเช่น [AZ] ตรงกับลักษณะตัวอักษรตัวพิมพ์เล็กระหว่าง A และ Z
[^mz]: ช่วงเวลาของตัวละครเชิงลบ จับคู่อักขระที่ไม่ได้อยู่ในช่วงเวลาที่กำหนด ตัวอย่างเช่น [MZ] ตรงกับอักขระใด ๆ ที่ไม่ได้อยู่ระหว่าง M และ Z
B: จับคู่ขอบเขตของคำนั่นคือตำแหน่งระหว่างคำและช่องว่าง ตัวอย่างเช่น ERB ตรงกับ ER ในไม่เคย แต่ไม่ตรงกับ ER ในคำกริยา
B: การจับคู่กับขอบเขตที่ไม่ใช่คำ EA*RB จับคู่หูไม่เคยเร็ว
D: จับคู่อักขระตัวเลข เทียบเท่ากับ [0-9]
D: จับคู่อักขระที่ไม่ใช่ตัวเลข เทียบเท่ากับ [^0-9]
F: ตรงกับการแบ่งหน้า
N: จับคู่อักขระตัวแบ่งบรรทัด
R: จับคู่อักขระการส่งคืน
S: จับคู่อักขระสีขาวใด ๆ รวมถึงช่องว่างแท็บการแบ่งหน้า ฯลฯ เทียบเท่ากับ [FNRTV]
S: จับคู่อักขระที่ไม่ได้มีการเปลี่ยนแปลงใด ๆ เทียบเท่ากับ [^ fnrtv]
T: จับคู่อักขระแท็บ
V: จับคู่อักขระแท็บแนวตั้ง
W: จับคู่อักขระคำใด ๆ รวมถึงขีดล่าง เทียบเท่ากับ [A-ZA-Z0-9_]
W: ตรงกับตัวละครที่ไม่ใช่คำใด ๆ เทียบเท่ากับ [^a-za-z0-9_]
NUM: จับคู่ NUM โดยที่ NUM เป็นจำนวนเต็มบวก อ้างอิงกลับไปจำการแข่งขัน ตัวอย่างเช่น (.) 1 จับคู่อักขระที่เหมือนกันสองตัวติดต่อกัน
N: จับคู่ n โดยที่ n คือค่าการถ่ายโอนรหัสแปด ค่าการถ่ายโอนรหัสแปดจะต้องมีความยาว 1, 2 หรือ 3 ตัวเลข
ตัวอย่างเช่นทั้ง 11 และ 11 จับคู่แท็บ 011 เทียบเท่ากับ 01 และ 1 ค่าการถ่ายโอนรหัสแปดค่าจะต้องไม่เกิน 256 มิฉะนั้นจะมีเพียงสองอักขระแรกเท่านั้นที่ถือว่าเป็นส่วนหนึ่งของนิพจน์ อนุญาตให้ใช้รหัส ASCII ในนิพจน์ทั่วไป
XN: Match N โดยที่ N คือค่าการถ่ายโอนรหัสหกเหลี่ยม ค่าการถ่ายโอนรหัสเลขฐานสิบหกต้องมีความยาวสองตัวเลขอย่างแน่นอน ตัวอย่างเช่น x41 ตรงกับ A. x041 เทียบเท่ากับ x04 และ 1 อนุญาตให้ใช้รหัส ASCII ในนิพจน์ปกติ
โอเคนี่เป็นวิธีการและคุณลักษณะที่ใช้กันทั่วไป ไวยากรณ์ด้านบนมีรายละเอียดมากอยู่แล้วดังนั้นจึงไม่จำเป็นต้องพูดคุยเกี่ยวกับเรื่องนี้ จากนั้นมาดูวิธีการใช้วิธีการและคุณลักษณะเหล่านี้เพื่อตรวจสอบความถูกต้องตามกฎหมายของข้อมูลในตัวอย่างที่เฉพาะเจาะจง มายกตัวอย่างกันเถอะ ตัวอย่างเช่นเราต้องการยืนยันการป้อนข้อมูลอีเมลโดยผู้ใช้ ดังนั้นข้อมูลประเภทใดที่ถือว่าเป็นอีเมลทางกฎหมาย ฉันสามารถป้อนสิ่งนี้: [email protected] แน่นอนว่าฉันจะป้อนสิ่งนี้: [email protected] แต่ข้อมูลดังกล่าวผิดกฎหมาย: xxx @@ com.cn หรือ@xxx.com.cn ฯลฯ
1. ต้องมีสัญลักษณ์เดียวและเพียงหนึ่งเดียว @
2. ต้องมีอย่างน้อยหนึ่งสัญลักษณ์ส่วนใหญ่สามประการ
3. ตัวละครตัวแรกต้องไม่เป็น @ หรือ
4. @ .or. @ ไม่อนุญาต
5. ตอนจบจะต้องไม่เป็นตัวละคร @ หรือ
ดังนั้นตามหลักการข้างต้นและไวยากรณ์ในตารางด้านบนเราสามารถรับเทมเพลตที่ต้องการได้อย่างง่ายดายดังนี้: (w) [@] {1} (w) [.] {1,3} (w)
ถัดไปให้วิเคราะห์เทมเพลตนี้อย่างรอบคอบ อันดับแรก W หมายถึงอักขระเริ่มต้นของอีเมลสามารถเป็นอักขระคำที่มีขีดเส้นใต้เท่านั้นเพื่อให้ได้รับเงื่อนไขที่สาม [@] {1} หมายความว่าควรจับคู่อักขระในอีเมลและสามารถจับคู่ได้เพียงครั้งเดียว [.] {1,3} หมายความว่าอย่างน้อย 1 จับคู่ที่อักขระมากที่สุด 3 ตัวในอีเมล พอใจเงื่อนไขที่สอง; เทมเพลตสุดท้าย (W) ระบุว่าอักขระที่สิ้นสุดสามารถเป็นตัวละครคำที่มีขีดเส้นใต้ได้เท่านั้นซึ่งเป็นไปตามเงื่อนไขที่ห้า (W) ตรงกลางของแม่แบบตรงกับเงื่อนไขที่สี่
จากนั้นเราเพียงแค่เรียกฟังก์ชั่น checkexp ((w) [@] {1} (w) [.] {1} (w), สตริงที่จะตรวจสอบ) หาก TRUE ถูกส่งคืนหมายความว่าข้อมูลนั้นถูกกฎหมายมิฉะนั้นจะไม่ถูกต้อง มันเป็นเรื่องง่าย นอกจากนี้เรายังสามารถเขียนเทมเพลตเพื่อตรวจสอบหมายเลข ID: ([0-9]) {15}; เทมเพลตสำหรับการตรวจสอบ URL: ^http: // {1} ((w) [.]) {1,3}, ฯลฯ ; เราจะเห็นได้ว่าแม่แบบเหล่านี้ให้โมดูลที่นำกลับมาใช้ใหม่ได้ดีมาก การใช้เทมเพลตต่าง ๆ ที่ได้รับจากตัวเราเองหรือผู้อื่นเราสามารถตรวจสอบความถูกต้องตามกฎหมายของข้อมูลได้อย่างง่ายดายและรวดเร็ว ฉันเชื่อว่าคุณจะเขียนเทมเพลตทั่วไปอย่างแน่นอน
ด้วยวิธีนี้เราสามารถตรวจสอบความถูกต้องตามกฎหมายของข้อมูลที่แตกต่างกันโดยการปรับแต่งเทมเพลตที่แตกต่างกัน ดังนั้นคุณลักษณะที่สำคัญที่สุดในวัตถุนิพจน์ทั่วไปคือแอตทริบิวต์รูปแบบ โดยการควบคุมแอตทริบิวต์นี้อย่างแท้จริงคุณสามารถใช้วัตถุนิพจน์ทั่วไปได้อย่างอิสระเพื่อให้บริการการตรวจสอบข้อมูลของเรา
ใช้กฎเดียวกัน
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: string str = <img src =/upimg/allimg/081024/0851350.jpg> <img src =/upimg/allimg/081024/0851351.jpg> <img src =/upimg/olimg/081024 regex reg = ใหม่ regex (<imgs src = (['|]?) (s .w) (1)); MatchCollection mc = reg.matches (อินพุต); foreach (จับคู่ M ใน MC) - tb_result.appendtext (string.format ({0} คือ matchrn, m.groups [0])); สำหรับ (int i = 0; i <m.groups.count; i) - // ที่อยู่รูปภาพควรเป็น M.Groups [2] .Value response.write (string.format (กลุ่ม [{0}] = {1} rn, i, m.groups [i] .value)); - - |
// มีกี่นัด
Response.write (mc.count.toString ());
แบ่งปัน: วิธีใช้โปรแกรม ASP เพื่ออ่านการจัดอันดับ Alexa World ของเว็บไซต์ เมื่อใดก็ตามที่การจัดอันดับ Alexa ได้รับการอัปเดตฉันต้องจัดเรียงการจัดอันดับของเว็บไซต์ที่คล้ายกันทั้งหมดที่เกี่ยวข้องทั้งหมดและดูการอัปเดตการจัดอันดับของเว็บไซต์คู่แข่งเหล่านี้ ฉันทำมากขึ้นและฉันรู้สึกรำคาญ แม้ว่าฉันจะมีเว็บไซต์มากกว่า 30 เว็บไซต์ แต่ฉันก็รู้สึกเหนื่อยเล็กน้อยหลังจากดูพวกเขาทีละคน ดังนั้นฉันต้องการ