PHP में सिंगल कोट्स में न्यूलाइन प्रिंट करें


125

मैं जितना संभव हो सके एकल उद्धरणों का उपयोग करने की कोशिश करता हूं और मैंने देखा है कि मैं एकल उद्धरणों में \ n उपयोग नहीं कर सकता। मुझे पता है कि मैं रिटर्न दबाकर शाब्दिक रूप से एक नई पंक्ति में प्रवेश कर सकता हूं, लेकिन यह मेरे कोड के इंडेंटेशन को बढ़ाता है।

क्या कुछ ASCII चरित्र या कुछ ऐसा है जिसे मैं टाइप कर सकता हूं जब मैं सिंगल कोट्स का उपयोग कर रहा हूं, तो क्या मैं नईलाइन तैयार करूंगा?


अगर किसी को उस समाधान में दिलचस्पी है जो ब्राउज़र और टर्मिनल (cli, कमांड लाइन) दोनों के लिए काम करता है: stackoverflow.com/a/9665253/1923625
उमर तारिक

हर कीमत पर सिंगल कोट्स लेने के लिए ईमानदारी से कोई कारण नहीं है । दोनों वाक्य रचना एक कारण से कार्य करते हैं। आप अंतर्वेशित चर या भाग निकले दृश्यों चाहते हैं, आप कर रहे हैं चाहिए दोहरे उद्धरण चिह्नों का उपयोग करने के लिए जानबूझकर । पालन ​​करने के लिए एक अच्छा नियम है: हमेशा एकल उद्धरण का उपयोग करें, जब तक कि आप अच्छे कारण के लिए दोहरे उद्धरण नहीं चाहते । यही मेरे दोस्तों की संगति है।
विक्टर श्रोडर

जवाबों:


142

नहीं, क्योंकि सिंगल-कोट्स भी हेक्स कोड रिप्लेसमेंट को रोकते हैं।

echo 'Hello, world!' . "\xA";

1
आह ठीक है .. मुझे उम्मीद थी कि मुझे इसका सहारा नहीं लेना पड़ेगा .. धन्यवाद!
मैट

जी श्रीमान। उन्होंने 10 मिनट के भीतर इसका जवाब दिया। मुझे स्वीकार करने के लिए तब तक इंतजार करना पड़ा, फिर मैं इसके बारे में भूल गया।
मैट

1
क्या इसका कोई विकल्प है? मुझे इसे एक preg_replace में उपयोग करने की आवश्यकता है जिसमें मैं दोहरे उद्धरण चिह्नों का उपयोग नहीं कर सकता हूं।
एलेक्स हैडली

1
यह सही तर्क नहीं है। यह नहीं है क्योंकि PHP में आप सिंगल कोट्स में एक नया-लाइन कैरेक्टर व्यक्त नहीं कर सकते हैं। और बस। मैनुअल पढ़ने से मदद मिल सकती थी :)
hakre

3
@ ठाकरे निश्चित रूप से, मैनुअल पढ़ने से मदद मिल सकती थी, लेकिन शुक्र है कि
स्टैकऑवरफ्लो

108
echo 'hollow world' . PHP_EOL;

निरंतर PHP_EOL का उपयोग करें तो यह ओएस स्वतंत्र भी है।


4
आपको आमतौर पर PHP_EOL का उपयोग नहीं करना चाहिए क्योंकि यह आपके कोड को उस सिस्टम पर निर्भर करता है जिस पर वह चल रहा है। जैसे कि आपका लिनक्स सर्वर दूसरे सर्वर से संचार कर रहा है और फिर आपका सर्वर विंडोज द्वारा बदल दिया जाता है ... अच्छा नहीं।
एंड्रियास

25

यदि आप echoकिसी ब्राउज़र पर हैं, तो आप <br/>अपने स्टेटमेंट के साथ उपयोग कर सकते हैं :

echo 'Will print a newline<br/>';
echo 'But this wont!';

3
दुर्भाग्य से टर्मिनल प्रयोजनों के लिए इसकी अधिक .. हालांकि आपकी प्रतिक्रिया के लिए धन्यवाद।
मैट

इसे केवल-पाठ ईमेल में आज़माएँ;)
काई नैक सेप

22

FYI करना संभव है कि नए उद्धरणों को दोहरे उद्धरण चिह्नों के बिना प्राप्त किया जा सके:

printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL);

जो उपयोगी हो सकता है यदि आपके दोहरे उद्धरणों का तर्कहीन डर कोई सीमा नहीं जानता है। हालांकि मुझे डर है कि यह इलाज बीमारी से भी बदतर हो सकता है।


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

5
मैंने इसका परीक्षण नहीं किया है, लेकिन मैं शर्त लगाता हूं कि दोहरे उद्धरण चिह्नों का उपयोग printfसामान्य रूप से या स्ट्रिंग कैटेनशन के उपयोग से तेज है ।
मिक्को रेंटालीनें

यह हमेशा तर्कहीन नहीं है, दोहरे-उद्धरण समस्याग्रस्त हो सकते हैं, जो आप करना चाहते हैं उसके आधार पर। echo 'For example, I want this to spit out php code.\necho $this->stuff;';
डेविड बॉउम

@DavidBaucum, मुझे पता है कि यह एक पुराना धागा है, लेकिन सिर्फ अपने लिए और किसी और के लिए संदर्भ के लिए जो इस पार लड़खड़ाता है, echo "For example, I want this to spit out php code.\necho \$test;";- जैसा कि आप देख सकते हैं कि आप चर से बच सकते हैं, जो आपके द्वारा दोहरे उद्धरणों के साथ वर्णित समस्या का समाधान करता है।
जोश वुड

9

PHP में सिंगल VS डबल कोट्स का उपयोग करने पर अंतर होता है

जैसे: १। echo '$var\n'; २।echo "$var\n";

  • 1 में, PHP का शाब्दिक रूप से प्रिंट होगा: $var\n
  • 2 में, PHP को स्मृति में स्थान को खोजना होगा $var, और उस स्थान में मान को वापस करना होगा, साथ ही, उसे एक नई पंक्ति के चरित्र के रूप में \ n पार्स करना होगा और उस परिणाम को प्रिंट करना होगा

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


मैं आपको दोहरे उद्धरण समाधान AKA आलसी-डेवलपर-समाधान का उपयोग करने के बजाय ऐसा करने का सबसे अच्छा तरीका खोजने की कोशिश करने के लिए सराहना करता हूं।
linuxdev

सबसे अच्छा तरीका मुझे पता है कि आप क्या चाहते हैं: इको 'फू', "\ n";
linuxdev

3
यह करने का तेज़ तरीका हैecho $var + "\n";
हेंगजी

2
@ हेन्जी: आप शायद मतलब है echo $var . "\n";
स्किप्पी ले ग्रांड गौरौ

@linuxdev: मुझे इस उत्तर की बात दिखाई नहीं देती। चूँकि 1 का आउटपुट वैसे भी 2 के आउटपुट के समान नहीं है (यहाँ तक कि माना जाता है $var='$var'...), क्या आप सेब की तुलना संतरे से नहीं कर रहे हैं?
स्किप्पी ले ग्रांड गौरौ

8

एकल उद्धरणों में आप केवल एक ही क्रम का उपयोग कर सकते हैं।

$foo = 'That\'s great';

एकमात्र तरीका है कि आप सिंगल कोट्स के साथ बनाए गए स्ट्रिंग में एक नई लाइन सम्मिलित कर सकते हैं, एक शाब्दिक न्यूलाइन डालना है

$bar = 'That\'s
cheating';

1
यह अन्य उत्तर की तुलना में सबसे आसान समाधान है।
काई नैक सेप

5

मुझे आश्चर्य है कि किसी ने फ़ंक्शन का उपयोग करने का विकल्प क्यों नहीं जोड़ा chr():

echo 'Hello World!' . chr(10);

या, यदि आप इसे एक लाख बार दोहराने जा रहे हैं तो अधिक कुशल:

define('C_NewLine', chr(10));
...
echo 'Hello World!' . C_NewLine;

यह एकल-और दोहरे-उद्धृत स्ट्रिंग को समाप्‍त करने की मूर्खतापूर्ण दिखने वाली धारणा से बचा जाता है।


1
यह सबसे सुंदर, सबसे लिंट फ्रेंडली, पोर्टेबल सॉल्यूशन IMO की तरह लगता है।
दारुल

3

आप <<< का उपयोग करने पर विचार कर सकते हैं

जैसे

<<<VARIABLE
this is some
random text
that I'm typing 
here and I will end it with the 
same word I started it with
VARIABLE

अधिक जानकारी: http://php.net/manual/en/language.types.string.php पर

Btw - कुछ कोडिंग वातावरण उपरोक्त सिंटैक्स को संभालना नहीं जानते हैं।


1
आह हां ... लेकिन मैं अभी भी इस तथ्य से घृणा करता हूं कि अंत में VARIABLE आपके कोड में सभी इंडेंटेशन को तोड़ देता है ... मैं HEREDOC वाक्यविन्यास का उपयोग करके इतने सारे (बेवकूफ) त्रुटियों में भाग गया हूं
मैट

0

नहीं, प्रलेखन के अनुसार , PHP एकल उद्धरणों में कोई विशेष प्रतीक नहीं पहचानता है। और यथासंभव एकल उद्धरण का उपयोग करने का कोई एकल कारण नहीं है


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

4
@Jackson में कोई प्रदर्शन वृद्धि नहीं है। किसी भी तरह से। इन बचकानी अफवाहों को भूल जाइए। और नहीं, बात चर की नहीं, बल्कि विशेष क्रम की करते हैं। यदि आप कोई अनुक्रम चाहते हैं, तो एक चर या एक नई लाइन का विस्तार किया जाना चाहिए - इसका उद्देश्य पर दोहरे उद्धरण चिह्नों का उपयोग करना है । और ओपी के उद्देश्य पर इसका उपयोग करने से इनकार करना बकवास है।
आपका कॉमन सेंस

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



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.