HTML में एकल उद्धरण की अनुमति है?


146

मैं PHP में दोहरे उद्धरण चिह्नों का उपयोग करने का एक बड़ा समय उपयोगकर्ता हूं ताकि मैं स्ट्रिंग को सुगम बनाने के बजाय चरों को प्रक्षेपित कर सकूं। परिणामस्वरूप, जब मैं HTML उत्पन्न कर रहा हूं तो मैं अक्सर टैग फ़ील्ड सेट करने के लिए एकल उद्धरण का उपयोग करता हूं। उदाहरण के लिए:

$html = "<input type='text' name='address' value='$address'>";

अब यह मेरे लिए कहीं अधिक पठनीय है

$html = "<input type=\"text\" name=\"address\" value=\"$address\">";

या

$html = '<input type="text" name="address" values="' . $address . '">' ;

संक्षिप्त खोजों से मैंने लोगों को यह कहते हुए सुना है कि HTML फ़ील्ड के लिए एकल उद्धरण EVERY ब्राउज़र द्वारा मान्यता प्राप्त नहीं है। इस प्रकार मैं सोच रहा हूँ कि ब्राउज़र को एकल उद्धरण HTML को पहचानने में क्या समस्या होगी?


जवाबों:


149

यह एचटीएमएल में सिंगल कोट्स कब इतना लोकप्रिय हुआ? । HTML में विशेषताओं के आसपास एकल उद्धरण हैं और हमेशा विनिर्देश द्वारा अनुमति दी गई है । मुझे नहीं लगता कि कोई भी ब्राउज़र उन्हें समझ नहीं पाएगा।


13
एक बात जो मुझे यहाँ बतानी है, वह यह है कि कुछ HTML क्लाइंट्स (आवश्यक ब्राउज़र नहीं) में एकल उद्धरण के मामले में अनुकूलता है। एक अजीब उदाहरण यह है कि हॉटमेल में यदि आप <img src='cid:xxx' ... />इनलाइन छवि दिखाने के लिए उपयोग करते हैं तो यह बिल्कुल भी दिखाई नहीं देगा क्योंकि सामग्री आईडी को अनदेखा किया गया था। आपको इसके बजाय `<img src =" cid: xxx "... /> का उपयोग करना होगा।
पृथ्वी इंजन

52

जैसा कि फील्हो ने उल्लेख किया है, हालांकि एक व्यापक रूप से फैला हुआ विश्वास है कि विशेषता मूल्यों के लिए एकल उद्धरण की अनुमति नहीं है, यह विश्वास गलत है।

XML मानक विशेषता मान के आसपास दोनों सिंगल और डबल उद्धरण अनुमति देता है।

XHTML मानक इसे बदलने के लिए कुछ भी नहीं कहता है, लेकिन संबंधित अनुभाग जो बताता है कि विशेषता मान को उद्धृत किया जाना चाहिए , उदाहरण में दोहरे उद्धरण चिह्नों का उपयोग करता है, जिससे शायद यह भ्रम पैदा हो। यह उदाहरण केवल यह इंगित कर रहा है कि एक्सएचटीएमएल में विशेषता मान एक्सएमएल में विशेषता मानों के लिए न्यूनतम मानक को पूरा करना चाहिए, जिसका अर्थ है कि उन्हें उद्धृत किया जाना चाहिए (जैसा कि सादे एचटीएमएल का विरोध है जो परवाह नहीं करता है), लेकिन आपको या तो एकल तक सीमित नहीं करता है या डबल उद्धरण।

बेशक, यह हमेशा संभव है कि आप एक ऐसे पार्सर से भिड़ेंगे, जो मानकों के अनुरूप नहीं है, लेकिन जब ऐसा होता है तो वैसे भी सभी दांव बंद हो जाते हैं। तो यह सबसे अच्छा है कि विनिर्देश क्या कहता है। इसलिए हमारे पास विनिर्देश हैं, आखिरकार।


2
XML मानक के लिंक के लिए +1। मुझे पता है कि यह एक पुराना धागा है, लेकिन पूर्णता के लिए, लोगों को मानक के भीतर एटवैल्यू व्याकरण विनिर्देश पर विशेष ध्यान देना चाहिए । यदि आप ईबीएनएफ (नियमित अभिव्यक्तियों के समान) पढ़ सकते हैं, तो आप देखेंगे कि यह एकल और डबल दोनों उद्धरणों का उपयोग करने की अनुमति देता है।
12

7
लेकिन HTML SGML पर आधारित है (यह XHTML जो XML पर आधारित है) तो XML कल्पना को उद्धृत करना बहुत उपयोगी नहीं है ...
डोनल फेलो

वास्तविक भ्रम यह है कि क्या एक विशेषता मूल्य में सिंगल या डबल कोट्स हमेशा बच निकलने की जरूरत है। ऐसा लगता है कि यदि आप विशेषता मूल्य के आसपास दोहरे उद्धरण चिह्नों का उपयोग करते हैं, तो आपको दोहरे उद्धरण चिह्नों से बचना होगा, लेकिन एकल उद्धरण नहीं। यदि इसके बजाय आप विशेषता मूल्य के आसपास एकल उद्धरणों का उपयोग करते हैं, तो आपको एकल उद्धरणों से बचना होगा, लेकिन दोहरे उद्धरण चिह्नों से नहीं। और मुझे लगता है कि या तो अनुमति देने की पूरी बात है। यदि आपके पास अपने मूल्य में बहुत अधिक दोहरे उद्धरण हैं, तो आप पूरे मूल्य के आसपास एकल उद्धरणों का उपयोग करके और इसके विपरीत से बचने से बच सकते हैं।
त्रिकोको

मामले का तथ्य यह है, यदि आप एक एक्सएचटीएमएल दस्तावेज़ मोड का उपयोग करते हैं, तो आप जावास्क्रिप्ट इंटरप्रेटर समस्याओं में चलेंगे, जहां यह किसी भी जावास्क्रिप्ट-निर्मित एचटीएमएल को दोहरे उद्धरण चिह्नों का उपयोग करने के लिए मजबूर करने की कोशिश करता है , उनके अंदर मौजूद दोहरे उद्धरण चिह्नों के साथ विशेषताओं को तोड़ता है। मैं फ़ायरफ़ॉक्स के साथ-साथ IE में कई साल पहले इस समस्या में भाग गया।
user2867288

16

मैंने लोगों को यह कहते हुए सुना है कि HTML फ़ील्ड के लिए एकल उद्धरण EVERY ब्राउज़र द्वारा मान्यता प्राप्त नहीं है

वह व्यक्ति गलत है।


30
जरुरी नहीं। मैं कुछ ही मिनटों में एक ब्राउज़र बना सकता हूं जो HTML फ़ील्ड के लिए एकल उद्धरण नहीं पहचानता है। बेशक, वहाँ एक बहुत अधिक है कि यह पहचान नहीं करेगा ...? पी
हल्की दौड़ कक्षा में

@LightnessRacesinOrbit "आपका क्या मतलब है कि यह ब्राउज़र CSS का समर्थन नहीं करता है?"
BadHorsie

... या इससे भी महत्वपूर्ण बात, "वह ब्राउज़र (जो नहीं करता है) मृत मांस है"। : पी
टूलमेकरसिवेव

@LightnessRacesinOrbit - लेकिन आपके पास है? लगता है जैसे किसी ने एक पूरे ब्राउज़र को बनाने के लिए पर्याप्त प्रेरित किया, इसे अतिरिक्त उद्धरण देने के लिए अतिरिक्त 5 मिनट लगाने होंगे।
user3413723

7

विश्वास मत करो सब कुछ आप इंटरनेट पर देखते हैं ...
मजेदार रूप से, मैंने अभी-अभी कुछ ऐसा ही उत्तर दिया है जिसमें किसी व्यक्ति द्वारा एकल उद्धरण घोषित करना एक्सएचटीएमएल में मान्य नहीं है ...

मम्म, मैं टाइप करते हुए ऊपर देखता हूं, और देखता हूं कि एडम एन समान विश्वास का प्रचार करता है। यदि वह अपने प्रतिज्ञान का समर्थन कर सकता है, तो मैंने जो लिखा था उसे वापस ले लेता हूं ... AFAIK, XML अज्ञेयवादी है और दोनों प्रकार के उद्धरण को स्वीकार करता है। मैंने भी केवल एक उद्धरण के साथ XHTML पृष्ठ समस्या के बिना कोशिश की और मान्य किया।


4

केवल समस्या है TEXT INPUT फ़ील्ड में डेटा जाना। विचार करें

<input value='it's gonna break'/>

के जैसा:

<input value="i say - "this is gonna be trouble" "/>

आप उससे बच नहीं सकते, आपको उपयोग करना होगा htmlspecialchars


2
हालाँकि आप ऐसा कर सकते हैं:<input value='it&apos;s gonna break'/>
rink.attenders.6

4
मुझे लगता है कि हमारे पास एकल या दोहरे उद्धरण चिह्नों का उपयोग करने का विकल्प है, इस परिदृश्य में पात्रों से बचने के लिए बचने के लिए। यदि आपके मूल्य में केवल दोहरे उद्धरण हैं, तो दोहरे उद्धरण चिह्नों से बचने के लिए एकल उद्धरण के साथ इसे <input value="it's not gonna break"/>घेरें: और इसके विपरीत <input value='i say - "this is not gonna be trouble"'/>:।
त्रिनको

1
@ ट्रायनको सही है। इसके अलावा: सामग्री के लिए , पहले स्थान पर "गूंगा उद्धरण" का उपयोग करने पर विचार करें, लेकिन "टाइपोग्राफिक उद्धरण": पीटर का बार, पीटर का बार नहीं। ☞ en.wikipedia.org/wiki/Quotation_mark#Quotation_mark_in_English
फ्रैंक नॉक

2

जैसा कि मैं विनिर्देश के बहुत अधिक हाल के संस्करण में इस पर जानकारी ढूंढना चाह रहा था और मुझे इसे खोजने में काफी समय लगा, यहां यह है:

से

HTML 5.3

संपादक का ड्राफ्ट, 18 अक्टूबर 2018

[...]

8.1.2.3। गुण

एकल-उद्धृत विशेषता मान सिंटैक्स

विशेषता नाम, जिसके बाद शून्य या अधिक स्थान वर्ण होते हैं, उसके बाद एक एकल U + 003D एकांक वर्ण अक्षर होता है, जिसके बाद शून्य या अधिक स्थान वर्ण होते हैं, इसके बाद एक एकल U + 0027 APOSTROPHE वर्ण (') होता है, जिसके बाद विशेषता मान होता है, विशेषता मानों के लिए ऊपर दी गई आवश्यकताओं के अलावा, किसी भी शाब्दिक U + 0027 APOSTROPHE वर्ण (') को शामिल नहीं करना चाहिए, और अंत में एक दूसरे एकल U + 0027 APOSTROPHE वर्ण (') का पालन करना चाहिए।

निम्नलिखित उदाहरण में, एकल-उद्धृत विशेषता मान सिंटैक्स के साथ टाइप विशेषता दी गई है:

<input type='checkbox'>

यदि एकल-उद्धृत विशेषता सिंटैक्स का उपयोग करने वाली विशेषता को किसी अन्य विशेषता का पालन किया जाना है, तो दोनों को अलग करने वाला एक अंतरिक्ष वर्ण होना चाहिए।

http://w3c.github.io/html/single-page.html#elements-attributes


1

मैं HTML में एकल उद्धरणों का भी उपयोग करता हूं और मुझे कभी भी समस्या का अनुभव नहीं हुआ है।


1

मैंने HTML पृष्ठों में एकल उद्धरणों का उपयोग किया है और इसमें जावा स्क्रिप्ट्स और इसके कार्य ठीक हैं। IE9, क्रोम और फ़ायरफ़ॉक्स में परीक्षण किया गया - ठीक काम कर रहा है।

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'>
        <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
        <title>Bethanie Inc. data : geographically linked</title>
        <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script>
        <script src='https://maps.googleapis.com/maps/api/js?v=3.11&sensor=false' type='text/javascript'></script>
        <script type='text/javascript'> 
        // check DOM Ready
        $(document).ready(function() {
            // execute
            (function() {
                /////////////// Addresses ///////////////////
                var locations = new Array();
                var i = 0;
                locations[i++] = 'L,Riversea: Comp Site1 at Riversea,1 Wallace Lane Mosman Park WA 6012'
                locations[i++] = 'L,Wearne: Comp Site2 at Wearne,1 Gibney St Cottesloe WA 6011'
                locations[i++] = 'L,Beachside:Comp Site3 Beachside,629 Two Rocks Rd Yanchep WA 6035'

                /////// Addresses/////////
                var total_locations = i;
                i = 0;
                console.log('About to look up ' + total_locations + ' locations');
                // map options
                var options = {
                    zoom: 10,
                    center: new google.maps.LatLng(-31.982484, 115.789329),//Bethanie  
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    mapTypeControl: true
                };
                // init map
                console.log('Initialise map...');
                var map = new google.maps.Map(document.getElementById('map_canvas'), options);
               // use the Google API to translate addresses to GPS coordinates 
               //(See Limits: https://developers.google.com/maps/documentation/geocoding/#Limits)
                var geocoder = new google.maps.Geocoder();
                if (geocoder) {
                    console.log('Got a new instance of Google Geocoder object');
                    // Call function 'createNextMarker' every second
                    var myVar = window.setInterval(function(){createNextMarker()}, 700);
                    function createNextMarker() {
                        if (i < locations.length) 
                       {
                            var customer = locations[i];
                            var parts = customer.split(','); // split line into parts (fields)
                            var type= parts.splice(0,1);    // type from location line (remove)
                            var name = parts.splice(0,1);    // name from location line(remove)
                            var address =parts.join(',');   // combine remaining parts
                            console.log('Looking up ' + name + ' at address ' + address);
                            geocoder.geocode({ 'address': address }, makeCallback(name, type));
                            i++; // next location in list
                            updateProgressBar(i / total_locations);


                        } else 
                       {
                            console.log('Ready looking up ' + i + ' addresses');
                            window.clearInterval(myVar);
                        }
                    }

                    function makeCallback(name,type) 
                   {
                        var geocodeCallBack = function (results, status) {
                            if (status == google.maps.GeocoderStatus.OK) {
                                var longitude = results[0].geometry.location.lng();
                                var latitude = results[0].geometry.location.lat();
                                console.log('Received result: lat:' + latitude + ' long:' + longitude);
                                var marker = new google.maps.Marker({
                                    position: new google.maps.LatLng(latitude, longitude),
                                    map: map,
                                    title: name + ' : ' + '\r\n' + results[0].formatted_address});// this is display in tool tip/ icon color
                                   if (type=='E')  {marker.setIcon('http://maps.google.com/mapfiles/ms/icons/green-dot.png')};

-1

हाल ही में मैंने Google खोज अनुकूलन के साथ एक समस्या का अनुभव किया है। यदि एक भी उद्धरण है, तो यह लिंक किए गए पृष्ठों को क्रॉल करने के लिए प्रतीत नहीं होता है।


1
क्या यह सिर्फ <a href=''>विशेषताओं में है?
एंटोकेनिंग

-2

... या सिर्फ हेरेडोक्स का उपयोग करें। फिर आपको कुछ भी बचने की चिंता करने की जरूरत नहीं है END


मेरा मानना ​​है कि आप PHP में heredoc क्षमता की बात कर रहे हैं ।
डेविड आरआर

निश्चित नहीं है कि यह उत्तर मूल प्रश्न के संदर्भ में क्यों दिया गया है। यह सीधे दोहरे छंद एकल उद्धरण मुद्दे का जवाब नहीं देता है, लेकिन यह ओपी से बचने के मुद्दे को संबोधित करता है जो ओपी को पहले स्थान पर एकल उद्धरण का समर्थन करता है। हालांकि यह उपयोग के उदाहरण के साथ कर सकता है।
एंटोनचैनिंग

-10

एकल उद्धरण HTML के लिए ठीक हैं, लेकिन वे वैध XHTML नहीं बनाते हैं, जो किसी भी ब्राउज़र का उपयोग करने में समस्याग्रस्त हो सकता है जो केवल XHTML का समर्थन करता है, लेकिन HTML का नहीं। मेरा मानना ​​है कि ऐसे किसी भी ब्राउज़र का अस्तित्व नहीं है, हालांकि वहाँ कुछ उपयोगकर्ता-एजेंट हैं जो सख्त एक्सएचटीएमएल की आवश्यकता है।


इससे भी बुरा हिस्सा वे लोग हैं जो HTML पेज लिखते हैं लेकिन उन्हें XHTML के रूप में चिह्नित करते हैं क्योंकि यह 'बेहतर' है। सौभाग्य से यह सनक नीचे जा रही है।
जेवियर

4
मुझे विश्वास नहीं है कि एक्सएचटीएमएल के बारे में यह कथन सत्य है। XML में "और 'दोनों स्वीकार्य हैं, और W3C सत्यापनकर्ता XHTML दस्तावेज़ों को एकल-उद्धृत विशेषताओं के साथ स्वीकार करता है। शायद यह XHTML के साथ एक भ्रम हो सकता है जो कि HTML में वैध नहीं हैं?
डौग मैकक्लो

जब तक आप अपने पेज को टेक्स्ट / एक्सएचटीएमएल के रूप में नहीं परोसेंगे और टेक्स्ट / एचटीएमएल ब्राउजर इसे HTML के रूप में प्रस्तुत नहीं करेंगे, तब तक HTML नियम लागू होंगे। Regrdless, w3C सिद्धांतों में से एक WEB को तोड़ने के लिए नहीं है। क्योंकि यह अभी काम करता है, यह कल काम करेगा।
डायोडस - जेम्स मैकफर्लेन

8
एक्सएचटीएमएल को पन्नों को अच्छी तरह से एक्सएमएल बनाने की आवश्यकता होती है, और एक्सएमएल या तो विशेषताओं के आसपास दोहरे या एकल उद्धरण की अनुमति देता है।
नेड बैचेल्ड 21

@SoftwareMonkey वास्तव में, आपको आवश्यकता है application/xhtml+xmlया application/xml
rink.attenders.6
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.