PHP - कैसे एक नया चरित्र बनाने के लिए?


405

PHP में मैं एक नया चरित्र बनाने की कोशिश कर रहा हूँ:

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';

बाद में मैंने नोटपैड में बनाई गई फ़ाइल को खोला और यह न्यूलाइन लिखता है:

1 जॉन डो \ आर \ एन 1 जॉन डो \ आर \ एन 1 जॉन डो \ आर \ एन

मैंने के कई रूपों की कोशिश की है \r\n, लेकिन कोई भी काम नहीं करता है। न्यूलाइन नईलाइन में क्यों नहीं बदल रही है?


जवाबों:


638

केवल डबल उद्धृत स्ट्रिंग्स बच दृश्यों की व्याख्या करते हैं \rऔर \nक्रमशः '0x0D' और '0x0A' के रूप में, इसलिए आप निम्नलिखित हैं:

"\r\n"

दूसरी ओर सिंगल उद्धृत स्ट्रिंग्स , केवल एस्केप सीक्वेंस \\और \'

इसलिए जब तक आप एकल पंक्ति वाले स्ट्रिंग को कहीं और उत्पन्न लाइन ब्रेक के साथ समतल नहीं करते हैं (उदाहरण के लिए, डबल उद्धृत स्ट्रिंग "\r\n"या chrफ़ंक्शन का उपयोग करके chr(0x0D).chr(0x0A)), एकल उद्धृत स्ट्रिंग के भीतर लाइन ब्रेक करने का एकमात्र तरीका शाब्दिक रूप से इसे अपने संपादक के साथ टाइप करना है:

$s = 'some text before the line break
some text after';

यदि आपको कुछ विशिष्ट वर्ण अनुक्रम ( \r\nउदाहरण के लिए) की आवश्यकता है, तो अपनी पंक्ति विराम सेटिंग के लिए अपने संपादक की जाँच करना सुनिश्चित करें ।


1
@Pacerier एक ही उद्धृत स्ट्रिंग में कैरेज़ रिटर्न और नई लाइन वर्ण रखने का एकमात्र तरीका सीधे कीबोर्ड के माध्यम से वर्णों में प्रवेश कर रहा है (प्रेस दर्ज करें, लाइन अंत पर आपके संपादक की सेटिंग्स पर निर्भर करता है)। अन्यथा बस स्ट्रिंग संघनन का उपयोग करें।
गुमबो

1
@ गुंबो: आप एक ओर एकल उद्धृत स्ट्रिंग्स कह रहे हैं, केवल एस्केप सीक्वेंस \\ और \ 'जानते हैं। लेकिन मैंने सिर्फ इको के साथ एक लाइन प्रिंट की है <; php इको 'आप इंटरनेट एक्सप्लोरर का उपयोग कर रहे हैं। <br>' गूंज 'नई लाइन जोड़ा'; ?> और ब्राउज़र में आउटपुट देखा। यह सचमुच मैंने प्रदर्शित किए गए दो तारों के बीच नई रेखा को जोड़ा। इसका मतलब है कि चरित्र या <br/> एकल उद्धृत स्ट्रिंग में विस्तार करता है। क्या इन तीनों के अलावा कोई अन्य HTML वर्ण हैं जिन्हें PHP द्वारा एकल उद्धृत स्ट्रिंग्स के अंदर समझा जा सकता है? मैं आपसे अनुरोध करता हूं कि आप अपने उत्तर को तदनुसार अपडेट करें। धन्यवाद।
PHPFan

1
@ user2839497 आप जो कह रहे हैं उससे कोई मतलब नहीं है। यहां कोई ब्राउज़र संदर्भ नहीं है। और निश्चित रूप से एक ब्राउज़र <br/> का सामना करते समय एक नई पंक्ति प्रस्तुत करता है। और निश्चित रूप से ऐसा कुछ नहीं है जो आपको एक उद्धृत स्ट्रिंग में '<br/>' जोड़ने से रोकता है। लेकिन यह एक साधारण पाठ फ़ाइल में एक नई रूपरेखा प्रस्तुत नहीं करता है।
फेंसर

1
@Pacerier गमबो की तरह संपादक में स्ट्रिंग को पंक्तिबद्ध करने के बजाय एक एकल उद्धरण नीति के लिए, अपनी टिप्पणी में आप अन्य समाधान का उपयोग कर सकते हैं Gumbos उत्तर में, उदाहरण: 'एक newline'chr (0x0A)' का उत्पादन एक ही उद्धृत स्ट्रिंग में। '।
फेंसर

2
आपको PHP_EOLइसके बजाय उपयोग करना चाहिए
kurdtpage

233

पूर्वनिर्धारित PHP_EOLस्थिरांक का उपयोग करें :

echo $clientid, ' ', $lastname, PHP_EOL;

निरंतर मान ऑपरेटिंग सिस्टम की लाइन अंत के अनुसार सेट किया जाएगा जहां PHP निष्पादित हो रहा है। लिनक्स पर, यह होगा "\n"; विंडोज पर, यह होगा "\r\n"


96

PHP में "इको" कमांड ब्राउज़र को रॉ html के रूप में आउटपुट भेजता है, भले ही दोहरे उद्धरण चिह्नों में ब्राउज़र इसे दो लाइनों में पार्स नहीं करेगा क्योंकि HTML में एक नई लाइन वर्ण का अर्थ कुछ भी नहीं है। इसलिए आपको या तो उपयोग करने की आवश्यकता है:

echo [output text]."<br>";

"इको" का उपयोग करते समय, या इसके बजाय fwrite का उपयोग करें ...

fwrite([output text]."\n");

यह HTML न्यूलाइन को "\ n" के स्थान पर आउटपुट करेगा।


4
जिस तरह से यह सवाल पूछा जाता है कि यह संभावना है कि वह इस डेटा को टेक्स्टबॉक्स या जावास्क्रिप्ट आदि के लिए
आउटपुट


23

दोहरे भावों के बीच तार "" मिलते हैं, जिसका अर्थ है कि वे बच गए पात्रों को छापने योग्य पात्रों में बदलते हैं।

एकल उद्धरणों के बीच तार '' शाब्दिक हैं, जिसका अर्थ है कि वे बिल्कुल वैसा ही व्यवहार किया जाता है जैसे कि पात्रों में टाइप किया जाता है।

आप दोनों एक ही पंक्ति में हो सकते हैं:

echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";

आउटपुट:

$clientid $lastname
1 John Doe

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

@ डैमियन फ्लैम, यही मैंने कहा है - एकल उद्धरणों के बीच की सामग्री आपस में जुड़ी हुई नहीं है, लेकिन दोहरे उद्धरण चिह्नों के बीच की सामग्री हैं। शायद मेरा उदाहरण भ्रामक है क्योंकि आप "$ ग्राहक" और "$ lastname" के बजाय $ ग्राहक और $ lastname की सामग्री को देखने की उम्मीद कर रहे हैं। मुझे लगता है कि यह एक टेबल की हेडिंग थी जिसे मैंने डिबगिंग के दौरान इस्तेमाल किया था। निम्नलिखित पंक्तियाँ होतींecho "$clientid $lastname\r\n"
केविन एस। मिलर

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


13

वास्तव \r\nमें आउटपुट के HTML पक्ष के लिए है। उन वर्णों के साथ आप इसे अधिक पठनीय बनाने के लिए html कोड में एक नई पंक्ति बना सकते हैं:

echo "<html>First line \r\n Second line</html>";

उत्पादन होगा:

<html>First line
Second line</html>

यह देखने वाला पृष्ठ होगा:

First line Second line

यदि आप वास्तव में इसका मतलब है कि आप "" बोली के साथ एकल उद्धरण को ठीक करने के लिए है:

echo "\r\n";

अन्यथा यदि आप पाठ को विभाजित करना चाहते हैं, तो हमारे नमूने में 'पहली पंक्ति' और 'दूसरी पंक्ति' में आपको html कोड का उपयोग करना होगा <br />:

First line<br />Second line

कि उत्पादन होगा:

First line
Second line

यदि आप पूरी स्क्रिप्ट को इसके साथ प्रतिस्थापित करते हैं, तो भी यह अधिक पठनीय होगा:

echo "$clientid $lastname \r\n";

1
नहीं, ऐसा नहीं होना चाहिए। क्योंकि यह ज्यादातर गलत है। पहला कोड ब्लॉक के रूप में प्रस्तुत करना होगा First line Second line- नए संस्करण सहित कोई भी व्हाट्सएप प्रदान किए गए आउटपुट में एक अंतरिक्ष चरित्र को संपीड़ित करेगा। इसके अलावा, </br>कुछ भी मान्य HTML है।
D_4_ni

1
यह भी ध्यान रखें कि यदि आप अपनी php स्क्रिप्ट के साथ टेक्स्ट ईमेल भेज रहे हैं, तो आपको ब्रेक के बजाय उन लाइन एंडिंग्स की आवश्यकता होगी (<br>)
केनीवी

9

w3school ने इस तरह की पेशकश की:

echo nl2br("One line.\n Another line.");

इस फ़ंक्शन के उपयोग से आप इसे कर सकते हैं..मैंने अन्य तरीकों की कोशिश की जो ऊपर कहा गया था, लेकिन वे मेरी मदद नहीं करेंगे ..


प्रश्न HTML में एक पैराग्राफ के भीतर एक पंक्ति को तोड़ने के बारे में नहीं है। यह newline चरित्र के बारे में है !
डेमियन फ्लैम

संदर्भ के लिए, nl2br()फ़ंक्शन <br />HTML टैग में नए वर्णों को परिवर्तित करता है । यह ब्राउज़र पृष्ठों पर एक नई रेखा बनाने के लिए उपयोगी हो सकता है, लेकिन पाठ फ़ाइलों या जावास्क्रिप्ट में एक नई पंक्ति या स्क्रीन या कंसोल पर मुद्रण के लिए नहीं।
शेरलहोमन

4

किसी कारण से, PHP में newline के पलायन के बारे में पूछने वाली हर एक पोस्ट उस मामले का उल्लेख करने में विफल रहती है, जिसमें केवल एक-उद्धृत स्ट्रिंग्स में एक नई पंक्ति सम्मिलित करना वही होगा जो आप सोचते हैं:

पूर्व 1।

 echo 'foo\nbar';

उदाहरण 1 स्पष्ट रूप से वांछित परिणाम को प्रिंट नहीं करता है, हालांकि, यह सच है कि आप एकल-उद्धरणों में एक नई रेखा से बच नहीं सकते हैं, आप निम्न कार्य कर सकते हैं:

पूर्व 2।

 echo 'foo
 bar';

उदाहरण 2 में वांछित व्यवहार है। दुर्भाग्य से डाली गई नई लाइन ऑपरेटिंग सिस्टम पर निर्भर है। यह आमतौर पर एक समस्या नहीं है, क्योंकि वेब ब्राउज़र / सर्वर नई लाइन की सही व्याख्या करेंगे कि क्या यह \ r, \ r \ n, या \ n है।

स्पष्ट रूप से यह समाधान आदर्श नहीं है यदि आप फ़ाइल को अन्य साधनों के माध्यम से वितरित करने की योजना बनाते हैं तो एक वेब ब्राउज़र और कई ऑपरेटिंग सिस्टम। उस मामले में आपको अन्य उत्तरों में से एक को देखना चाहिए।

नोट: एक फीचर रिच टेक्स्ट एडिटर का उपयोग करके आपको एक द्विआधारी चरित्र (एस) के रूप में एक नई पंक्ति सम्मिलित करने में सक्षम होना चाहिए जो फ़ाइल को संपादित करने की तुलना में एक अलग ऑपरेटिंग सिस्टम पर एक नई रेखा का प्रतिनिधित्व करता है। यदि बाकी सब विफल रहता है, तो बस बाइनरी एससीआई चरित्र डालने के लिए एक हेक्स संपादक का उपयोग करना होगा।


3

एक पाठ स्ट्रिंग में newlines पाने के लिए PHP nl2br का उपयोग करें।

$ पाठ = "मनु एक अच्छा लड़का है। (दर्ज करें) वह अच्छी तरह से कोड कर सकता है।

गूंज nl2br ($ पाठ);

परिणाम।

मनु एक अच्छा लड़का है।

वह अच्छी तरह से कोड कर सकते हैं।


1
nl2brसमारोह के लिए नई पंक्ति वर्ण धर्मान्तरित <br />HTML टैग। यदि स्ट्रिंग में कोई नईलाइन वर्ण नहीं है, तो यह फ़ंक्शन कुछ भी नहीं करेगा! इसके अलावा सवाल HTML में एक पैराग्राफ के भीतर एक लाइन को तोड़ने के बारे में नहीं है। यह newline चरित्र के बारे में है !
डेमियन फ्लैम

2

मैंने इस संयोजन को सिंगल कोट्स और डबल कोट्स दोनों के भीतर आज़माया है। लेकिन किसी ने काम नहीं किया। इसके बजाय दोहरे उद्धरण चिह्नों में \nबेहतर उपयोग <br/>करें। ऐशे ही..

$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";

प्रश्न HTML में एक पैराग्राफ के भीतर एक पंक्ति को तोड़ने के बारे में नहीं है। यह newline चरित्र के बारे में है !
डेमियन फ्लैम


2

किसी भी गूंज कथन के लिए, मैं हमेशा <br>दोहरे उद्धरण चिह्नों का उपयोग करता हूं ।


2
प्रश्न HTML में एक पैराग्राफ के भीतर एक पंक्ति को तोड़ने के बारे में नहीं है। यह newline चरित्र के बारे में है !
डेमियन फ्लैम

1

मेरे लिए कुछ भी काम नहीं कर रहा था।

PHP_EOL

. "\r\n";

$NEWLINE_RE = '/(\r\n)|\r|\n/'; // take care of all possible newline-encodings in input file
$var = preg_replace($NEWLINE_RE,'', $var);

मेरे लिये कार्य करता है:

$admin_email_Body = $admin_mail_body .'<br>' ."\r\n";
$admin_email_Body .= 'This is line 2 <br>' ."\r\n";
$admin_email_Body .= 'This is line 3 <br>' ."\r\n";

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