2008-11-01 19 views
37

\ n और \ r (मुझे पता है कि इसमें ओएस के साथ कुछ करने के लिए कुछ है) के बीच क्या अंतर है, और क्रॉस प्लेटफार्म काम करने वाले लाइन ब्रेक को प्रतिबिंबित करने का सबसे अच्छा तरीका क्या है?PHP इको लाइन ब्रेक

संपादित करें: Jarod के जवाब में, मैं हूँ एक .txt लॉग फ़ाइल में एक लाइन ब्रेक प्रतिध्वनित करने के लिए चौथाई का उपयोग किया है, हालांकि मुझे यकीन है कि मैं ऐसे गूंज के रूप में चीजों के लिए भविष्य में इसे का उपयोग किया जाएगा एक पेज पर एचटीएमएल makup।

+0

इसके अलावा, आप php से echo'd उत्पादन कैसे उपयोग कर रहे हैं? स्पष्ट रूप से एक वेब पेज में
टैग लाइन ब्रेक को परिभाषित करता है, इसलिए मुझे लगता है कि इसका अलग-अलग उपयोग किया जा रहा है? –

उत्तर

38
  • \n एक लिनक्स/यूनिक्स लाइन ब्रेक है।
  • \r क्लासिक मैक ओएस (गैर-ओएस एक्स) लाइन ब्रेक है। मैक ओएस एक्स उपर्युक्त यूनिक्स \n का उपयोग करता है।
  • \r\n एक विंडोज लाइन ब्रेक है।

मैं आमतौर पर हमारे लिनक्स सिस्टम पर \n का उपयोग करता हूं और अधिकांश विंडोज ऐप्स इसके साथ ठीक से निपटते हैं।

+2

यदि मैं \ r \ n का उपयोग करता हूं तो यह लिनक्स और विंडोज़ में काम करेगा? साथ ही, क्या यह लिनक्स में पाठ के रूप में \ r को आउटपुट करेगा यदि मैं ऐसा करता हूं? – PHLAK

+0

अभी जांचने के लिए लिनक्स तक पहुंच नहीं है लेकिन मुझे पूरा यकीन है कि \ r लिनक्स में ठीक से बाहर नहीं आती है अगर आपने इसे टेक्स्ट फ़ाइल के रूप में देखा है। यदि आपको यह देखने की ज़रूरत है कि वे क्या दिखते हैं तो विभिन्न विकल्पों का परीक्षण करना बहुत आसान होना चाहिए। –

+2

अंतिम संगतता के लिए, यह प्रिंट नहीं करेगा, \ r \ n – UnkwnTech

28

जारोड के उत्तर में विभिन्न ओएस पर \ r \ n का सही उपयोग शामिल है। यहां कुछ इतिहास दिया गया है:

  • \ r, या दशमलव कोड 13 के साथ ASCII वर्ण को "कैरिज रिटर्न" के बाद सीआर नाम दिया गया है।
  • \ n, या दशमलव कोड 10 के साथ ASCII वर्ण, "लाइनलाइन" के बाद "न्यूलाइन" या एलएफ नाम दिया गया है।

शब्दावली "कैरिज रिटर्न" और "लाइन फीड" की तारीखें तब होती हैं जब टेलेटीप्स का उपयोग मॉनिटर और कीबोर्ड के साथ टर्मिनलों के बजाय किया जाता था। टेलीलेट या टाइपराइटर के संबंध में, "कैरिज रिटर्न" का मतलब कर्सर को ले जाना और टेक्स्ट के पहले कॉलम पर लौटना था, जबकि "लाइन फीड" का मतलब रोलर को निम्नलिखित पंक्ति पर घुमाने के लिए घूर्णन करना था। उस समय भेद को समझ में आया। आज संयोजन \ n, \ r, \ r \ n पाठ की एक पंक्ति के अंत का प्रतिनिधित्व करने के लिए पूरी तरह से मनमाना हैं।

111

PHP_EOL निरंतर उपयोग करें, जो स्वचालित रूप से ऑपरेटिंग सिस्टम के लिए सही लाइन ब्रेक पर सेट होता है जो PHP स्क्रिप्ट चल रहा है।

ध्यान दें कि यह निरंतर PHP 5.0.2 के बाद घोषित किया गया है।

<?php 
    echo "Line 1" . PHP_EOL . "Line 2"; 
?> 

पश्च संगतता के लिए:

if (!defined('PHP_EOL')) { 
    switch (strtoupper(substr(PHP_OS, 0, 3))) { 
     // Windows 
     case 'WIN': 
      define('PHP_EOL', "\r\n"); 
      break; 

     // Mac 
     case 'DAR': 
      define('PHP_EOL', "\r"); 
      break; 

     // Unix 
     default: 
      define('PHP_EOL', "\n"); 
    } 
} 
+0

कोई बुरा विचार नहीं है, लेकिन मैं चीजों को यथासंभव पीछे संगत रखना चाहता हूं। – PHLAK

+7

ध्यान दें कि आउटपुट आवश्यक रूप से ओएस को नहीं भेजा जाता है जिस पर PHP चल रहा है। – eyelidlessness

+4

इस उत्तर को सही उत्तर के रूप में चिह्नित करने की आवश्यकता है। मैंने एक ऐप विकसित किया और Hostmonster.com पर परीक्षण किया (वे रेडहाट लिनक्स चलाते हैं) और क्लाइंट ने सेंटोस बॉक्स में कोड को तैनात किया। देव में \ n "अपेक्षित रूप से एक नई लाइन प्रदान की गई; सेंटोस बॉक्स पर यह नहीं था। एक बार जब मैंने "\ n" को PHP_EOL में बदल दिया तो समस्या दूर हो गई और कोड अपेक्षित के रूप में काम करता था। सबक सीखा: भले ही प्रोड ओएस देव ओएस का व्युत्पन्न है, और भले ही "\ n" सभी * निक्स बक्से पर काम करना चाहिए, अगर इसे बिल्कुल सही ढंग से कार्यान्वित किया जाना है तो हमेशा PHP_EOL का उपयोग करें, कभी भी \ n " –

7

PHP4 पर PHP_EOL के लिए कोई पश्च संगतता आवश्यक।

निरंतर PHP_EOL उपलब्धता पर मूर के बयान को सही करने की आवश्यकता है: "... PHP 5.0.2 के बाद से घोषित किया गया है।"

नहीं, यह PHP 4.3.10 के बाद से आसपास रहा है। कोई भी जो अभी भी उससे कम कुछ भी चला रहा है, किसी भी तरह से बिज़ में नहीं होना चाहिए। आज तक कोई भी PHP 5 से कम कुछ भी नहीं उपयोग करना चाहिए!

From the PHP manual: "PHP_EOL The correct 'End Of Line' symbol for this platform. Available since PHP 4.3.10 and PHP 5.0.2".

नीचे मेरी जवाब देने के लिए
संबंधित मुद्दे