url http://example.com/foo?bar
ถูกต้องหรือไม่
ฉันกำลังมองหาลิงก์ไปยังเว็บไซต์ที่เป็นทางการที่ระบุว่าไม่ทางใดก็ทางหนึ่ง คำตอบง่ายๆใช่ / ไม่ใช่หรือหลักฐานเล็กน้อยจะไม่ตัดมัน
url http://example.com/foo?bar
ถูกต้องหรือไม่
ฉันกำลังมองหาลิงก์ไปยังเว็บไซต์ที่เป็นทางการที่ระบุว่าไม่ทางใดก็ทางหนึ่ง คำตอบง่ายๆใช่ / ไม่ใช่หรือหลักฐานเล็กน้อยจะไม่ตัดมัน
คำตอบ:
URI RFCไม่อาณัติรูปแบบสตริงแบบสอบถาม แม้ว่าจะได้รับการยอมรับว่าสตริงการสืบค้นมักจะมีคู่ชื่อ - ค่า แต่ก็ไม่จำเป็นต้องมี (เช่นมักจะมี URI อื่น)
3.4. แบบสอบถาม
คอมโพเนนต์เคียวรีประกอบด้วยข้อมูลที่ไม่ใช่ลำดับชั้นที่พร้อมกับข้อมูลในองค์ประกอบพา ธ (ส่วนที่ 3.3) ทำหน้าที่ระบุทรัพยากรภายในขอบเขตของโครงร่างของ URI และอำนาจการตั้งชื่อ (ถ้ามี) ...
... อย่างไรก็ตามเนื่องจากคอมโพเนนต์เคียวรีมักใช้เพื่อดำเนินการระบุข้อมูลในรูปแบบของคู่ "คีย์ = ค่า" และค่าที่ใช้บ่อยค่าหนึ่งคือการอ้างอิงถึง URI อื่น ...
HTMLกำหนดว่าแบบฟอร์มที่ส่งผ่าน HTTP GET ควรเข้ารหัสค่าฟอร์มเป็นคู่ชื่อ - ค่าในรูปแบบ "? key1 = value1 & key2 = value2 ... " (เข้ารหัสอย่างถูกต้อง) การแยกวิเคราะห์สตริงเคียวรีขึ้นอยู่กับโค้ดฝั่งเซิร์ฟเวอร์ (เช่น Java servlet engine)
คุณไม่ได้ระบุว่าคุณใช้เฟรมเวิร์กฝั่งเซิร์ฟเวอร์ใด แต่เป็นไปได้ว่าเฟรมเวิร์กฝั่งเซิร์ฟเวอร์ของคุณอาจคิดว่าสตริงเคียวรีจะอยู่ในคู่ชื่อ - ค่าเสมอและอาจทำให้หายใจไม่ออกในสตริงแบบสอบถามที่ไม่ได้ ในรูปแบบนั้น (เช่น?bar
) หากรหัสที่กำหนดเองของคุณเองในการแยกวิเคราะห์สตริงการสืบค้นคุณก็ต้องแน่ใจว่าคุณจัดการกับรูปแบบสตริงการสืบค้นดังกล่าว หากเป็นเฟรมเวิร์กคุณจะต้องศึกษาเอกสารของคุณหรือทดสอบเพื่อดูว่ามีการจัดการอย่างไร
isindex
มหัศจรรย์name
จาก HTML5 ช่วยให้สามารถส่งสตริงการสืบค้นโดยไม่มีรูปแบบคีย์ - ค่าstackoverflow.com/a/37579004/895245
ใช้ได้อย่างสมบูรณ์แบบ คุณสามารถพิจารณาว่าพวกเขาเทียบเท่ากับผู้ชายกล้ามโตที่ยืนเงียบ ๆ อยู่ข้างหลังกลุ่มผู้ส่งสาร ผู้ชายไม่มีชื่อและไม่พูด แต่การปรากฏตัวของเขาบ่งบอกถึงข้อมูล
"โครงร่าง" http "ใช้เพื่อค้นหาทรัพยากรเครือข่ายผ่านโปรโตคอล HTTP ส่วนนี้กำหนดไวยากรณ์และความหมายเฉพาะของโครงร่างสำหรับ http URLs" http://www.w3.org/Protocols/rfc2616/rfc2616.html
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
ใช่สิ่งใดก็ใช้ได้หลังเครื่องหมายคำถาม เซิร์ฟเวอร์ของคุณอาจตีความแตกต่างกัน แต่anecdotallyคุณสามารถดูบางภาษาการรักษาที่เป็นค่าบูลีนซึ่งเป็นจริงถ้าจดทะเบียน
ใช่มันถูกต้อง
หากต้องการตรวจสอบว่ามีพารามิเตอร์อยู่หรือไม่นี่เป็นวิธีหนึ่งที่ทำได้
ส่วนที่เกี่ยวข้องเพียงอย่างเดียวของข้อมูลจำเพาะ URI คือการรู้ทุกอย่างระหว่างส่วนแรก?
และส่วนแรก#
เหมาะกับคำจำกัดความของคำค้นหา สามารถรวมอักขระใด ๆ เช่น[:/.?]
. ซึ่งหมายความว่าสตริงการสืบค้นเช่น?bar
หรือ?ten+green+apples
ถูกต้อง
ค้นหาRFC 3986 ที่นี่
isindex
ไม่ใช่ HTML5 อย่างมีความหมาย
มีให้เลิกใช้งานเพื่อใช้เป็นองค์ประกอบแรกในรูปแบบเท่านั้นและส่งโดยไม่มีชื่อ
หากชื่อของรายการคือ "isindex" ประเภทของรายการจะเป็น "ข้อความ" และนี่คือรายการแรกในชุดข้อมูลแบบฟอร์มจากนั้นต่อท้ายค่าเพื่อผลลัพธ์และข้ามขั้นตอนย่อยที่เหลือสำหรับรายการนี้ไปยังรายการถัดไป รายการถ้ามีหรือขั้นตอนถัดไปในอัลกอริทึมโดยรวมเป็นอย่างอื่น
แฟล็ก isindex มีไว้สำหรับการใช้งานแบบเดิมเท่านั้น แบบฟอร์มที่สอดคล้องกับเอกสาร HTML จะไม่สร้างเพย์โหลดที่ต้องถอดรหัสด้วยชุดแฟล็กนี้
ครั้งสุดท้ายที่isindex ได้รับการสนับสนุนเป็น HTML3 ใช้ใน HTML5 เพื่อให้เข้ากันได้ง่ายขึ้น
การสนับสนุนในไลบรารีสำหรับรูปแบบของ URI นี้จะแตกต่างกันไปอย่างไรก็ตามบางไลบรารีให้การสนับสนุนแบบดั้งเดิมเพื่อให้ใช้งานง่ายisindex
ขึ้น
ไลบรารีบางแห่งเช่นURI ของ Perlมีวิธีการแยกวิเคราะห์โครงสร้างประเภทนี้
$uri->query_keywords
$uri->query_keywords( $keywords, ... )
$uri->query_keywords( \@keywords )
Sets and returns query components that use the keywords separated by "+" format.
url
(ไม่มีการสนับสนุนพิเศษ)ในอีกตัวอย่างหนึ่งที่node.js
ใช้บ่อยกว่าให้ใช้เส้นทางปกติและลดการแยกวิเคราะห์เป็นอย่างใดอย่างหนึ่ง
parseQueryString
)API การแยกวิเคราะห์ URI อื่น ๆ ส่วนใหญ่ตามสิ่งที่คล้ายกันนี้
parse_url
ตามการใช้งานที่คล้ายกัน แต่ส่งคืนสตริงสำหรับแบบสอบถามเท่านั้น การแยกวิเคราะห์เป็นวัตถุที่k=>v
ต้องการparse_string()
มันเป็นที่ถูกต้อง: ดูวิกิพีเดีย , (. 3.3 HTTP) RFC 1738 , RFC 3986 ( 3. ไวยากรณ์ส่วนประกอบ)
isindex
เลิกใช้เวทมนตร์name
จาก HTML5
คุณลักษณะที่เลิกใช้แล้วนี้อนุญาตให้ส่งแบบฟอร์มเพื่อสร้าง URL ดังกล่าวโดยให้หลักฐานเพิ่มเติมว่าใช้ได้กับ HTML เช่น:
<form action="#isindex" class="border" id="isindex" method="get">
<input type="text" name="isindex" value="bar"/>
<button type="submit">Submit</button>
</form>
สร้าง URL ประเภท:
?bar
มาตรฐาน: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
อย่างไรก็ตามเลิกใช้แล้วตามที่ระบุไว้ที่: https://stackoverflow.com/a/41689431/895245
ตามคำตอบอื่น ๆ ทั้งหมดที่อธิบายไว้ใช้ได้อย่างสมบูรณ์สำหรับการตรวจสอบโดยเฉพาะสำหรับสิ่งที่เป็นบูลีน
นี่คือฟังก์ชันง่ายๆในการรับสตริงการสืบค้นตามชื่อ:
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
และตอนนี้คุณต้องการตรวจสอบว่าสตริงข้อความค้นหาที่คุณต้องการมีอยู่หรือไม่คุณอาจทำสิ่งง่ายๆเช่น:
var exampleQueryString = (getParameterByName('exampleQueryString') != null);
exampleQueryString
จะเป็นถ้าฟังก์ชั่นไม่สามารถหาสตริงแบบสอบถามมิฉะนั้นจะเป็นfalse
true