ตัวแยกวิเคราะห์ URL

เมื่อ webhook ทำงานผิดพลาด หรือลิงก์ติดตามพาพารามิเตอร์ผิดมาด้วย วิธีที่เร็วที่สุดคือแยก URL ออกแล้วอ่านทีละส่วน วาง URL ใดก็ได้ แล้วตัวแยกวิเคราะห์นี้จะแยกมันออกเป็นส่วนประกอบ ได้แก่ scheme, ชื่อผู้ใช้และรหัสผ่าน, host, port, path, สตริง query และ fragment จากนั้นจะกาง query ออกเป็นตารางของคู่คีย์และค่า เครื่องมือทำงานบนเซิร์ฟเวอร์ของเราด้วยตัวแยกวิเคราะห์ URL มาตรฐานของ PHP คุณจึงเห็นได้พอดีว่าแบ็กเอนด์ PHP อ่านลิงก์เดียวกันนี้อย่างไร

วิธีแยกวิเคราะห์ URL

  1. 1

    วาง URL

    ใส่ URL ใดก็ได้ ไม่ว่าจะเป็นแบบสัมบูรณ์หรือสัมพัทธ์ ไม่มีอะไรต้องคลิก ระบบจะแยกวิเคราะห์ขณะที่คุณพิมพ์

  2. 2

    อ่านส่วนประกอบ

    ตารางจะเติม scheme, host, port, ผู้ใช้, รหัสผ่าน, path, query และ fragment ที่พบ ส่วนที่ว่างจะแสดงเป็นขีด

  3. 3

    กาง query

    คู่ `key=value` แต่ละคู่จะแสดงในแถวของตัวเอง โดย percent-encoding และ `+` จะถูกถอดรหัสเป็นอักขระจริง

  4. 4

    คัดลอกพารามิเตอร์

    ปุ่มคัดลอกจะนำพารามิเตอร์ query ทั้งหมดมาพร้อมกันในรูปบรรทัด `key=value` พร้อมวางลงในไคลเอนต์ API

กายวิภาคของ URL

ลองดู URL นี้: https://user:pass@api.example.com:8443/v1/users?page=2&sort=name#profile ตัวแยกวิเคราะห์จะแยกมันออกเป็น:

ส่วนประกอบ ค่า
scheme https
user user
pass pass
host api.example.com
port 8443
path /v1/users
query page=2&sort=name
fragment profile

จากนั้น สตริง query จะถูกกางออกเป็นตารางของตัวเอง: page = 2 และ sort = name

วิธีอ่านสตริง query

  • ค่าจะถูกถอดรหัสจาก percent-encoding และ + จะกลายเป็นช่องว่าง ดังนั้น q=hello%20world และ q=hello+world จึงถูกอ่านเป็น hello world เหมือนกัน
  • คู่หนึ่งจะถูกแยกที่ = ตัวแรก ดังนั้น token=a=b=c จึงเก็บ a=b=c ไว้เป็นค่า
  • คีย์ที่ซ้ำกันจะเก็บเฉพาะค่าสุดท้ายเท่านั้น: ?id=1&id=2 จะคืนค่า id = 2 หากต้องการเก็บทุกค่า ให้ใช้ไวยากรณ์อาร์เรย์ id[]=1&id[]=2 ซึ่งจะแสดงเป็นรายการ
  • คีย์ที่มีวงเล็บเหลี่ยม เช่น filter[status]=open จะกลายเป็นโครงสร้างซ้อนกันและแสดงเป็น JSON

พอร์ต, path และ fragment

  • พอร์ต จะแสดงตามที่เขียนไว้พอดี ไม่มีการเพิ่มหรือลบอะไร ดังนั้น :443 จะแสดงเป็น 443 และ URL ที่ไม่มีพอร์ตจะเว้นแถวนั้นให้ว่าง
  • เครื่องหมายทับท้าย เปลี่ยน path: https://a.com มี path ว่าง ขณะที่ https://a.com/ มี path เป็น /
  • fragment (หลัง #) เป็นค่าที่เบราว์เซอร์ใช้เท่านั้น เพื่อเลื่อนไปยัง anchor หรือขับเคลื่อน router ฝั่งไคลเอนต์ มันไม่เคยไปถึงเซิร์ฟเวอร์ ดังนั้นสิ่งใดที่แบ็กเอนด์ต้องอ่านควรอยู่ในสตริง query
  • host จะถูกคืนตามที่พิมพ์พอดี ตัวแยกวิเคราะห์นี้ไม่แปลงโดเมนที่รองรับสากล (ไม่ใช่ ASCII) เป็น Punycode หรือกลับกัน

คำถามที่พบบ่อย

ได้ ลิงก์สัมพัทธ์อย่าง /v1/users?ref=nav ไม่มี scheme หรือ host แถวเหล่านั้นจึงว่างไว้ ขณะที่ path และ query ยังคงถูกเติม เฉพาะ URL ที่มีรูปแบบผิด เช่น มีพอร์ตที่ไม่ใช่ตัวเลขอย่าง http://a.com:port เท่านั้นที่จะถูกปฏิเสธทั้งหมด

จะเก็บเฉพาะค่าสุดท้าย ดังนั้น ?id=1&id=2 จะคืนค่า id = 2 เหมือนกับที่แบ็กเอนด์ PHP อ่านทุกประการ หากคุณต้องการทุกค่า ให้ใช้ไวยากรณ์อาร์เรย์ id[]=1&id[]=2 แล้วค่าเหล่านั้นจะแสดงเป็นรายการ

ตัวแยกวิเคราะห์รายงานพอร์ตตามที่เขียนไว้พอดี มันจะไม่ลบพอร์ตเริ่มต้นหรือเติมพอร์ตที่ขาดหายเลย ดังนั้น URL ที่ไม่มีพอร์ตจะแสดงแถวว่าง และ https://a.com:443 จะแสดง 443

URL จะถูกส่งไปยังเซิร์ฟเวอร์ของเราเพื่อแยกวิเคราะห์ เพราะเครื่องมือนี้ทำงานบนเซิร์ฟเวอร์ ไม่ใช่แค่ในเบราว์เซอร์ของคุณ เราไม่เก็บตัว URL เอง เราบันทึกเพียงจำนวนครั้งแบบไม่ระบุตัวตนว่ามีการใช้ตัวแยกวิเคราะห์

เครื่องมือที่เกี่ยวข้อง

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสุ่มที่อยู่

สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

ตัวสร้างลูกศร CSS

สร้างลูกศร CSS ในเบราว์เซอร์ด้วยทิศทาง สี ขนาด และความหนาของเส้นขอบ แล้วคัดลอกกฎ.

เครื่องมือนี้มีให้บริการในภาษาอื่น