2008-10-28 10 views
63

हाल ही में मुझे यह बहुत कुछ दिखाई दे रहा है:क्या HTML विशेषताओं के लिए सिंगल कोट्स का उपयोग करना सही है?

<a href='http://widget-site-example.com/example.html'> 
    <img src='http://widget-site-example.com/ross.jpg' alt='Ross&#39;s Widget' /> 
</a> 

क्या यह HTML में सिंगल कोट्स का उपयोग करने के लिए मान्य है? जैसा कि मैंने उपरोक्त हाइलाइट किया है, यह भी समस्याग्रस्त है क्योंकि आपको एस्ट्रोफ़ेस से बचना है।

+4

वैकल्पिक विशेषता का \ नहीं उस में ' होना चाहिए, ' – Greg

+10

@Greg: "एक-उद्धरण कैरेक्टर ('), जब एक विशेषता मान उद्धृत करने के लिए प्रयोग किया जाता है, यह भी ' या ' के रूप में भाग निकले किया जाना चाहिए (नहीं भाग निकले किया जाना चाहिए एक्सएचटीएमएल दस्तावेजों को छोड़कर ' के रूप में) जब यह विशेषता मूल्य के भीतर ही प्रकट होता है। " – aehlke

+0

@Aehlke यह टिप्पणी मेरे लिए पृष्ठ पर सबसे उपयोगी आइटम थी। एएसपी द्वारा उत्पन्न ग्रिड में Apostrophes।नेट मेरे जावास्क्रिप्ट को घुमा रहा था, आपके द्वारा सूचीबद्ध भागने को हल करने में बहुत मददगार थे। धन्यवाद। – CodexArcanum

उत्तर

48

यह निश्चित रूप से सिंगल कोट्स (HTML 4.01, section 3.2.2) का उपयोग करने के लिए मान्य है। मैंने इस तरह की प्रवृत्ति को नहीं देखा है, लेकिन शायद कुछ ढांचा है जो आपके द्वारा देखी गई वेबसाइटों को सशक्त करता है जो सिंगल कोट्स का उपयोग करके उद्धरण के लिए होता है।

+0

काफी हद तक यह मुख्य रूप से ऐसी साइटें हैं जो बाहरी कोड आउट करती हैं - उदाहरण के लिए ओहलोह के लिए एक आंकड़े छवि या http://www.pushuptheweb.com/ – Ross

+2

एचटीएमएल में, एक्सएचटीएमएल नहीं, हालांकि –

+2

एकल उद्धरण HAML में डिफ़ॉल्ट हैं (http://haml-lang.com)। – brad

44

मुझे लगता है कि सिंगल कोट्स का उपयोग करना एक प्रोग्रामिंग भाषा का उपयोग करके HTML को गतिशील रूप से उत्पन्न करता है जो डबल कोट स्ट्रिंग अक्षर का उपयोग करता है।

उदा।

String.Format("<a href='{0}'>{1}</a>", Url, Desc) 
+7

क्या? आपको स्ट्रिंग पसंद नहीं है। फोरमेट ("{1}", यूआरएल, डीएससी) ??? = पी – StingyJack

+0

स्ट्रिंग.फॉर्मैट (@ "{1}", यूआरएल, डीएससी) यह है कि आप क्या सोच सकते हैं :) –

+5

या स्ट्रिंग.फॉर्मैट ("{1}", यूआरएल, डीएससी) – rizzle

12

PHP का उपयोग जब HTML उत्पन्न करने के लिए इसे पसंद कुछ करने के लिए आसान हो सकता है: एक तार के साथ एक चर के साथ एक स्ट्रिंग श्रृंखलाबद्ध से

$html = "<img src='$url' />"; 

, के रूप में पीएचपी डबल-कोटेड तार में चर पार्स करता है।

+0

में एक्सएसएस भेद्यताएं बनाने का एक शानदार उदाहरण है $ html = "" पर घूमने से भी आसान है; बच निकले उद्धरण – Sekhat

+4

को भूलना आसान है, वास्तव में आप इसे php में भी उलट सकते हैं: $ html = ''; –

+13

@ केविन लाइटी, PHP में सिंगल कोट्स का उपयोग करके $ यूआरएल प्रिंट यूआरएल के रूप में प्रिंट करेगा, वैरिएबल सामग्री नहीं: http://php.net/manual/en/language.types.string.php – bradlis7

0

सिंगल कोट्स के खिलाफ क्या है?

आपके पास किसी भी समस्या के बिना आपके एचटीएमएल कोड पर सिंगल/डबल कोट्स हो सकते हैं, जब तक आप एक मौजूदा टैग के अंदर एक ही उद्धरण शैली रखते हैं (कई ब्राउज़र इस बारे में भी शिकायत नहीं करेंगे, और सत्यापन सिर्फ यह चाहते हैं कि आप एक उद्धरण के साथ शुरू करते हैं, उसी प्रोप्राइटी के अंदर, उसी के साथ अंत)

यादृच्छिक उद्धरण शैलियों के लिए नि: शुल्क समर्थन !!! (yay; डी)

3

जब आप डबल कोट्स एम्बेड करना चाहते हैं तो यह आसान है।

+3

यदि आप परिदृश्य को पूरी तरह से उलट देते हैं तो भी लागू होता है ... इसलिए कोई अच्छा कारण नहीं है IMO –

+0

@ जो फिलिप्स हमेशा नहीं, कुछ भाषाएं आपको बस 'परिदृश्य को उलट नहीं देती हैं'। .NET, उदाहरण के लिए, स्ट्रिंग को डबल कोट्स का उपयोग करके परिभाषित करने की अनुमति होगी। – krowe2

+0

@ krowe2 यह सच है। लेकिन यदि आप सी # स्ट्रिंग्स में जावास्क्रिप्ट संग्रहीत कर रहे हैं, तो आप शायद सभी प्रकार की चीजें गलत कर रहे हैं –

3

ASP.NET में, यह अगर आप विशेषताओं में data-binding expressions उपयोग कर रहे हैं एकल उद्धरण का उपयोग करना आसान है:

<asp:TextBox runat="server" Text='<%# Bind("Name") %>' /> 
4

किसी PHP में इसका इस्तेमाल कर सकते से बचने "अगर वे करने के लिए डबल उद्धृत स्ट्रिंग का उपयोग कर रहे से बचने के लिए यह भीतर चर पार्स, या स्ट्रिंग संयोजन ऑपरेटर का उपयोग से बचने के लिए

उदाहरण:।

echo "<input type='text' value='$data'/>"; 
बजाय

echo "<input type=\"text\" value=\"$data\" />"; 

या

echo '<input type="text" value="' . $data . '" />'; 

आजकल मैं हमेशा जावास्क्रिप्ट के लिए HTML और एकल उद्धरण के लिए दोहरे उद्धरण चिह्नों का उपयोग करने के चिपके रहते हैं।

2

एकल उद्धरण (एक्स) एचटीएमएल में पूरी तरह से कानूनी हैं। दूसरी तरफ, उनसे बचने के लिए बैकस्लैश का उपयोग करना नहीं है। <img src=' http://widget-site-example.com/ross.jpg ' alt='Ross\'s Widget' /> alt text "Ross \" के साथ एक छवि है, और खाली s और Widget/Widget' विशेषताएँ हैं। एचटीएमएल में एस्ट्रोफ़े से बचने का सही तरीका &#39; है।

+1

एकल उद्धरण एक्सएचटीएमएल में पूरी तरह से कानूनी नहीं हैं। –

+3

एकल उद्धरण कानूनी एक्सएचटीएमएल हैं, है ना? –

+0

d03boy: यह गलत है। – Ms2ger

2

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

echo '<input type="text" value="', $data, '" />'; 
+0

लेकिन जब तक आप इसे महसूस करते हैं, तो आप पहले से ही अपनी गूंज स्ट्रिंग को डबल कोट्स के साथ शुरू कर चुके हैं, इसलिए आप केवल स्ट्रिंग के अंदर एकल का उपयोग करते हैं। यह मेरे साथ हर समय होता है। – DiegoDD

+0

यह भी अधिक मेमोरी कुशल है, क्योंकि यह एक नई स्ट्रिंग बनाने से बचाता है। – Andrea

+0

यह सवाल का जवाब देने में प्रतीत नहीं होता है। – krowe2

1

एकल उद्धरण चिह्न कम अव्यवस्था के साथ एक क्लीनर पेज उत्पन्न करते हैं। आपको HTML स्ट्रिंग्स में भाग नहीं लेना चाहिए और यह आपकी पसंद का उपयोग करना है ... मेरी वरीयता सामान्य रूप से सिंगल कोट्स है और यदि मुझे स्ट्रिंग में एक सिंगल कोट शामिल करना है (उदाहरण के लिए स्ट्रिंग के अंदर स्ट्रिंग के लिए डिलीमीटर) मैं दूसरे के लिए एक & सिंगल के लिए डबल कोट्स का उपयोग करता हूं।

0

मुझे पता है कि यह एक पुराना धागा है, लेकिन अभी भी बहुत प्रासंगिक है।

आप अपने सृजित HTML में उद्धरण पर नियंत्रण चाहते हैं, आप PHP में sprintf() समारोह (और इसी तरह के कॉल कई अन्य भाषाओं में उपलब्ध) का उपयोग कर सकते हैं:

$html = sprintf('<a href="%s">%s</a>', $url, $text); 

sprintf() का उपयोग करना करने के लिए प्रारूप स्ट्रिंग की अनुमति देता है किसी डेटाबेस या कॉन्फ़िगरेशन फ़ाइल से या अनुवाद तंत्र के माध्यम से इसे पुनर्प्राप्त करके आसानी से संशोधित किया जा सकता है।

यह बहुत पठनीय है, और अनुमति देता है बहुत कम परिवर्तन के साथ सृजित HTML में या तो डबल या एकल उद्धरण, और कभी किसी भी एस्केपिंग:

$html = sprintf("<a href='%s'>%s</a>", $url, $text); 
0

क्यों नहीं शिफ्ट कुंजी दबाने बचाने के। एक ही मिलेज के लिए एक कम कीस्ट्रोक।

+0

हे! सबसे अच्छा सामान्य कारण, मैंने देखा है। –

-4

आपको उद्धरणों से पूरी तरह से बचना चाहिए।

आपके उदाहरण में केवल एक उद्धृत विशेषता वास्तव में आवश्यक उद्धरण आवश्यक है।

<!-- best form --> 
<a href=http://widget-site-example.com/example.html> 
    <img src=http://widget-site-example.com/ross.jpg alt='Ross&#39;s Widget' /> 
</a> 

आप उद्धरण चिह्नों का उपयोग करते हैं, वहाँ कोई कड़ी मेहनत और तेजी नियम है, लेकिन मैं यदि आवश्यक हो तो अंदर एक कोट, डबल कोट के साथ सबसे अधिक देखा है।

डबल कोट्स का उपयोग कुछ वैधकर्ताओं को पास नहीं करेगा।

+0

सामग्री मान्य होने के लिए उद्धरण आवश्यक हैं [टैग: एचटीएमएल] 4.01 – Eric

1

आप मान्य या तो दोनों या विशेषताओं के लिए काम करेंगे होने की चाहते हैं। HTML4 यहां मान्य किया जा सकता है: https://validator.w3.org/

आप supporting only modern browsers ( और अधिक) हैं तो आप वाक्य रचना जिसे एकल कोट, डबल कोट, और कोई उद्धरण अनुमति देता है जब उपयोग कर सकते हैं (के रूप में वहाँ विशेषताओं में कोई भी विशेष वर्ण हैं 'मूल्य)। एचटीएमएल 5 यहाँ मान्य किया जा सकता है: https://validator.w3.org/nu

0

एक और मामला है जहाँ आप एकल उद्धरण का उपयोग करना चाहते हो सकता है: डेटा में संग्रहीत JSON डेटा का श्रेय:

<tr data-info='{"test":true}'></tr> 

JSON ऑब्जेक्ट कुंजी दोहरे उद्धरण में हो, तो चाहिए विशेषता ही नहीं कर सकते ।