PHP में मल्टी-लाइन स्ट्रिंग्स


141

विचार करें:

$xml = "l";
$xml = "vv";

echo $xml;

यह प्रतिध्वनि vv होगी । SimpleXML , आदि जैसी चीजों के लिए मैं मल्टी-लाइन स्ट्रिंग्स क्यों और कैसे कर सकता हूं ?


1
क्या आप चाहते हैं कि अगली पंक्ति पर "v" और उसके बाद "v" प्रतिध्वनित हो?
माइक सैमुअल

3
ऊपर देखो concatenation। यह तब कहा जाता है जब आप एक साथ तार लगाते हैं।
क्रशस्पीडर

14
@haywire Google पर पहला और सहायक परिणाम होने से।
सेस टिम्मरमैन

जवाबों:


262

कुंआ,

$xml = "l
vv";

काम करता है।

आप निम्नलिखित का भी उपयोग कर सकते हैं:

$xml = "l\nvv";

या

$xml = <<<XML
l
vv
XML;

टिप्पणी के आधार पर संपादित करें:

आप .=ऑपरेटर का उपयोग करके तारों को समतल कर सकते हैं ।

$str = "Hello";
$str .= " World";
echo $str; //Will echo out "Hello World";

5
यदि आप छोरों या MySQL के बीच छोरों जबकि मैं भूल गया है। धन्यवाद
TheBlackBenzKid

89
@ TheBlackBenzKid: उम्म ... क्या?
मदारा का भूत

1
उदाहरण। जबकि ($ rc = mysql_fetch_array ($ adviews)) {$ xml =। ] " '/>"। } $ xml। = "</ ग्राफ़>";
TheBlackBenzKid

3
@ स्पेसर आपको एक हेरेडोक के अंदर उद्धरणों से बचने की आवश्यकता नहीं है।
मदारा का भूत

7
@Pacerier आपने पूछा कि हमें उद्धरणों पर आनुवंशिकता के साथ परेशान करने की आवश्यकता क्यों है। इसीलिए। दोनों मल्टीलाइन स्ट्रिंग्स के लिए विकल्प हैं।
मदारा का भूत

139

PHP में Heredoc और Nowdoc स्ट्रिंग्स हैं, जो PHP में मल्टीलाइन स्ट्रिंग्स को संभालने का सबसे अच्छा तरीका है।

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
$var is replaced automatically.
EOD;

एक नॉवडोक एक हेरेडोक की तरह है, लेकिन यह चर को प्रतिस्थापित नहीं करता है।

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
$var is NOT replaced in a nowdoc.
EOD;

खबरदार कि अंत टोकन EODको इंडेंट नहीं होना चाहिए, या PHP इसे स्वीकार नहीं करेगा। इसके अलावा, आपको " EOD" का उपयोग करने की आवश्यकता नहीं है ; यह आप चाहते हैं किसी भी स्ट्रिंग हो सकता है।


8
अपवित्र क्योंकि मैं हमेशा इंडेंटेशन के बारे में भूल जाता हूं।
Matuszek

8
$xml="l" . PHP_EOL;
$xml.="vv";
echo $xml;

गूंजेंगे:

l
vv

PHP_EOL पर प्रलेखन ।


पसंदीदा। @Pacerier
TheBlackBenzKid

क्या उत्तरों को चिह्नित करने का कोई तरीका है? मैंने हमेशा सोचा है कि आप केवल सवालों पर ही ऐसा कर सकते हैं। @ TheBlackBenzKid
पचेरियर

मेरा मतलब है कि मैंने उसे एक प्लस 1 दिया क्योंकि मैंने उसे फिर से तैयार किया।
TheBlackBenzKid

@ TheBlackBenzKid "faved";)
आंद्रेस मोरालेस

8

यह सुनिश्चित नहीं है कि यह प्रदर्शन-वार कैसे हो सकता है, लेकिन उन जगहों के लिए जहां यह वास्तव में कोई मायने नहीं रखता है, मुझे यह प्रारूप पसंद है क्योंकि मुझे यकीन है कि यह \ r \ n (CRLF) का उपयोग कर रहा है और न कि मेरी PHP फ़ाइल जो भी प्रारूप हो में बचाया।

$text="line1\r\n" .
      "line2\r\n" .
      "line3\r\n";

यह मुझे इंडेंट भी देता है लेकिन मैं चाहता हूं।


5

आउटपुट बफ़रिंग का उपयोग करने के लिए एक और उपाय है , आप सब कुछ इकट्ठा कर सकते हैं जो आउटपुट हो रहा है / गूंज रहा है और इसे एक चर में संग्रहीत किया जा सकता है।

<?php
ob_start(); 

?>line1
line2
line3<?php 

$xml = ob_get_clean();

कृपया ध्यान दें कि आउटपुट बफ़रिंग इस सटीक मामले के लिए प्रदर्शन और कोड स्वच्छता के संदर्भ में सबसे अच्छा समाधान नहीं हो सकता है, लेकिन इसे संदर्भ के लिए यहां छोड़ने के लायक है।


2

शायद कोशिश करें "=।"

$xml="l";
$xml.="vv";

आपको "lvv" देगा;


1
क्या उन्होंने कहा कि डायन ऑपरेटिंग सिस्टम का उपयोग कर रही है? एक शेयर पूरी तरह से प्रश्न के रूप में है;)
नोर्बर्ट

हालाँकि, जिसके परिणामस्वरूप बहु-पंक्ति स्ट्रिंग का सवाल नहीं है।
टूलमेकरसेव


0

अकेले कोड में अलग-अलग लाइनों पर स्ट्रिंग्स "एल" और "वीवी" लगाने के लिए:

$xml = "l";
$xml .= "vv"
echo $xml;

इस उदाहरण में आप .=स्ट्रिंग को उस स्ट्रिंग चर के पिछले संस्करण के अंत में जोड़ने के लिए कह रहे हैं । याद रखें कि = केवल एक असाइनमेंट ऑपरेटर है इसलिए आपके मूल कोड में आप वैरिएबल को एक नया स्ट्रिंग मान दे रहे हैं।

अकेले में प्रतिध्वनि में अलग लाइनों पर "l" और "vv" के तार लगाने के लिए:

$xml = "l\nvv"
echo $xml;

इस उदाहरण में आपको कई स्ट्रिंग्स की आवश्यकता नहीं है, क्योंकि नई लाइन कैरेक्टर आपके \nलिए इसका ध्यान रखेगी।

कोड में अलग-अलग लाइनों पर "एल" और "वीवी" तार लगाने के लिए और जब गूँज रही हो:

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