2012-05-27 4 views
10

मैं ट्विटर पर भी साझा करें बटन के लिए एक पॉपअप के साथ एक सीधा लिंक का उपयोग कर रहा: <a href="https://twitter.com/intent/tweet?url=<?php echo urlencode(get_permalink());?>&amp;text=<?php echo get_the_title(); ?>&amp;via=username" target="_blank"एन्कोडिंग get_the_title() के लिए ट्विटर URL साझा करें

सब पागल सामाजिक मीडिया वहाँ प्लग इन के साथ

, इस सरल और सबसे सीधा है शेयर बटन को लागू करने के लिए मेरे लिए रास्ता।

हालांकि, शीर्षक में & होने पर, शीर्षक उस स्थिति को तोड़ देगा जो स्थिति के लिए दिखाना है। मैं समझता हूं कि आपको urlencode() शीर्षक की आवश्यकता है, लेकिन जब मैं ऐसा करता हूं, तो यह स्थिति संदेश में विशेष वर्ण प्रदर्शित करता है।

जब से तुम ट्विटर में एक [space] के लिए एक + की जरूरत नहीं है अब साझा करते हैं, मैं &amp; के साथ किसी भी & के बदलने के लिए की जरूरत है। हालांकि, यह str_replace() के साथ काम नहीं कर रहा है। कुछ कारणों से यह HTML विशेष वर्णों को आउटपुट करता है। <?php echo str_replace('&', '&amp;', urldecode(get_the_title())); ?> जैसे कुछ करना या तो काम नहीं करता है।

+0

आपका क्या मतलब है "लेकिन जब मैं ऐसा करता हूं, तो यह स्थिति संदेश में विशेष वर्ण प्रदर्शित करता है"? अंतिम HTML क्या है जिसे आप आउटपुट कर रहे हैं और यह ट्विटर पर कैसे दिखता है? – deceze

+0

यह वास्तविक वर्ण संदेश में विशेष वर्णों को आउटपुट करता है। तो, आप यहां उदाहरण के लिए देख सकते हैं: https://twitter.com/intent/tweet?url=http%3A%2F%2Fgoogle.com&text=%26%238216%3BMr.+Blah+%26%23038%3B+Mrs ।+ Blah और via = उपयोगकर्ता नाम – AAA

उत्तर

41

& कई पैरामीटर अलग करने के लिए यूआरएल में एक विशेष अर्थ है। यदि आपका यूआरएल ...a&b... है, तो यह "& बी" टेक्स्ट का प्रतिनिधित्व नहीं करता है, यह दो अलग-अलग पैरामीटर का प्रतिनिधित्व करता है। इससे बचने के लिए, आपको urlencode टेक्स्ट की आवश्यकता है, जो & को %26 में बदल देता है। के बाद से सभी & रों %26 ने ले ली है

एन्कोडिंग &&amp; लिए, HTML में & अक्षर, जो आप अपने पाठ में नहीं होना चाहिए के लिए केवल आवश्यक है।

मुझे वर्डप्रेस की जटिलताओं को नहीं पता, लेकिन मुझे लगता है कि get_the_title() एक मान देता है जो पहले से ही HTML से बच निकला है। मतलब, इसमें & के बजाय &amp; शामिल है, इसलिए यह वह मूल्य है जो ट्विटर पर भेजा जा रहा है यदि आप इसे इस तरह भेजते हैं। आप जो चाहते हैं वह एचटीएमएल इकाइयों के बिना पाठ प्राप्त करना है, यानी आपको &amp; को वास्तविक मान & में बदलने के लिए इसे HTML-डीकोड करने की आवश्यकता है। एचटीएमएल-डीकोडेड मान को यूआरएल-एन्कोडेड होना चाहिए, इसलिए यह आपके यूआरएल सिंटैक्स को खराब नहीं करता है।

यह सबको एक साथ रखें, इस उम्मीद है कि यह करना चाहिए:

echo urlencode(html_entity_decode(get_the_title(), ENT_COMPAT, 'UTF-8')); 

वहाँ जटिल html_entity_decode नृत्य नहीं करना पड़ता Wordpress से सीधे HTML निकाय के बिना मूल शीर्षक प्राप्त करने के लिए अन्य तरीके हैं, लेकिन फिर से हो सकता है, मैं वर्डप्रेस के बारे में बहुत कुछ नहीं जानता।


पुनश्च: यदि आप एक HTML संदर्भ में है कि यूआरएल outputting रहे हैं के बाद से, आप एचटीएमएल यूआरएल फिर से इसे अपने HTML वाक्य रचना को नहीं तोड़ता है सुनिश्चित करने के लिए सांकेतिक शब्दों में बदलना चाहिए। यह ज्यादातर अकादमिक पूर्णता के लिए है, urlencode() HTML सिंटैक्स को तोड़ने वाले कुछ भी वापस नहीं करना चाहिए। लेकिन सिर्फ पैडेंटिक पूर्णता के लिए, यहां:

echo htmlspecialchars(urlencode(html_entity_decode(get_the_title(), ENT_COMPAT, 'UTF-8')), ENT_COMPAT, 'UTF-8'); 
+0

मैं समझता हूं, यही कारण है कि मैंने शुरुआत में इसे एन्कोड किया, लेकिन समस्या यह है कि जब मैं पूरे पाठ को एन्कोड करता हूं, तो विशेष HTML वर्ण वास्तविक स्थिति में दिखाए जाते हैं। उदाहरण के लिए यहां देखें: https://twitter.com/intent/tweet?url=http%3A%2F%2Fgoogle.com&text=%26%238216%3BMr.+Blah+%26%23038%3B+Mrs.+Blah&via= उपयोगकर्ता नाम – AAA

+0

यूआरएल में आपके पास शुरू होने के लिए विशेष HTML वर्ण क्यों हैं? फिर, वास्तविक HTML क्या है जो आउटपुट हो रहा है? – deceze

+0

मैं 'get_the_title()' का उपयोग कर रहा हूं ताकि मैं 'text = get_the_title()' के साथ कुछ ट्वीट कर सकूं। कभी-कभी पोस्ट के शीर्षक में ''' या '&' होते हैं, जो असामान्य नहीं है। वास्तविक HTML जो आउटपुट किया जा रहा है वह एन्कोडेड 'get_the_title()' है, लेकिन जैसा कि मैंने पहले कहा था, समस्या यह है कि ट्विटर स्थिति में विशेष वर्णों को आउटपुट कर रहा है। मैंने इस समस्या को गुमराह किया है और किसी को भी एक निश्चित समाधान नहीं लगता है, क्योंकि यह स्पष्ट रूप से एक ज्ञात समस्या है। ^ और मैंने आपको वास्तविक HTML आउटपुट दिखाया है। – AAA

संबंधित मुद्दे