আমি কখন পিএইচপি ধ্রুবক "PHP_EOL" ব্যবহার করব?


360

কখন এটি ব্যবহার করা ভাল ধারণা PHP_EOL?

আমি কখনও কখনও পিএইচপি কোড স্যাম্পল এ এটি দেখতে। এটি কি ডস / ম্যাক / ইউনিক্সের শেষ লাইনের সমস্যাগুলি পরিচালনা করে?


1
আমি মনে করি এই পৃষ্ঠায় উত্তোলিত উত্তরগুলিতে প্রচুর বিভ্রান্তিকর পরামর্শ রয়েছে। আপনি যদি দুটি পৃথক প্ল্যাটফর্মে স্ক্রিপ্ট চালনা করেন, তবে আউটপুট বা উত্পন্ন ডেটা (লগ ফাইল, এইচটিএমএল পৃষ্ঠা, ডাটাবেস রেকর্ড ইত্যাদি) এর সাথে তুলনা করুন, তবে পিএইচপি_ইওএল পরিবর্তনের সাথে একটি মিল মিলবে। বেশিরভাগ ক্ষেত্রে এটি আপনি চান তা নয়।
ডনকিক্সোট

উত্তর:


357

হ্যাঁ, PHP_EOLক্রস-প্ল্যাটফর্ম-সামঞ্জস্যপূর্ণ উপায়ে নিউলাইন চরিত্রটি অনুসন্ধান করার জন্য অবশ্যই ব্যবহৃত হয়, তাই এটি ডস / ইউনিক্স সমস্যাগুলি পরিচালনা করে।

নোট করুন যে PHP_EOL বর্তমান সিস্টেমের জন্য শেষ রীতিটি উপস্থাপন করে । উদাহরণস্বরূপ, ইউনিক্সের মতো সিস্টেমে চালিত হওয়ার পরে এটি কোনও উইন্ডোজ এন্ডলাইন খুঁজে পাবে না।


9
কমান্ড-লাইন স্ক্রিপ্ট লেখার সময় এটিকে শেষ-লাইন চরিত্র হিসাবে ব্যবহার করা উচিত?
থমাস ওপেনস

5
@ আন্ড্রে: অন্য যে কোনও ব্যক্তি ইনস্টল, ব্যবহার এবং স্থাপনের জন্য অ্যাপ্লিকেশন লেখেন তার সম্পর্কে কীভাবে? আপনি কি পরামর্শ দিচ্ছেন যে এইগুলি কি তাদের "সমর্থিত প্ল্যাটফর্মগুলি" * নিক্সের মধ্যে সীমাবদ্ধ করা উচিত?
সিলিন্ড্রিক

1
@ স্ট্যান - আপনি যে "বড় প্রকল্পগুলি" জানেন তা হ'ল সর্বোত্তম অনুশীলনের সিদ্ধান্ত নেওয়ার কারণটিই নয়, কোনটি কার্যকর বা কার্যকর তা নয় let আমি একটি "বড় প্রকল্প" বজায় রাখছি যা কিছু উইন্ডো সার্ভার সহ বেশ কয়েকটি হোস্টের অংশে স্থাপন করা হয়েছে। ধরে নিবেন না - ধ্রুবকগুলি কোনওরকম ক্ষতি করে না এবং প্ল্যাটফর্ম-নিরপেক্ষ কোড লেখার জন্য এটি একটি সম্পূর্ণ বৈধ উপায়। বিপরীতে আপনার মন্তব্য কিছুটা অযৌক্তিক।
ক্রিস বেকার

5
না, আপনার উত্তরটি সঠিক বলে আমি মনে করি না। আপনি একটি সিস্টেমে কোড তৈরি করেছেন তবে অন্য সিস্টেমে আউটপুট প্রেরণ করুন। পিএইচপি_ইওএল, তবে আপনাকে কেবল যেখানে সিস্টেমটি ব্যবহৃত হবে সেখানে লাইন সমাপ্ত ডিলিমিটারটি বলে। এটি আপনাকে গ্যারান্টি দেয় না যে অন্যান্য সিস্টেম একই ডিলিমিটার ব্যবহার করে। আমার উত্তর নীচে দেখুন।
স্ট্যান ই

1
তবে PHP_EOLফর্ম থেকে পোস্ট করা ডেটার জন্য ব্যবহার করবেন না ।
নবী KAZ

88

থেকে main/php.hপিএইচপি সংস্করণ 7.1.1 এবং সংস্করণ 5.6.30 এর:

#ifdef PHP_WIN32
#   include "tsrm_win32.h"
#   include "win95nt.h"
#   ifdef PHP_EXPORTS
#       define PHPAPI __declspec(dllexport)
#   else
#       define PHPAPI __declspec(dllimport)
#   endif
#   define PHP_DIR_SEPARATOR '\\'
#   define PHP_EOL "\r\n"
#else
#   if defined(__GNUC__) && __GNUC__ >= 4
#       define PHPAPI __attribute__ ((visibility("default")))
#   else
#       define PHPAPI
#   endif
#   define THREAD_LS
#   define PHP_DIR_SEPARATOR '/'
#   define PHP_EOL "\n"
#endif

আপনি দেখতে PHP_EOLপাচ্ছেন "\r\n"(উইন্ডোজ সার্ভারগুলিতে) বা "\n"(অন্য কোনও কিছুতে) হতে পারে। পিএইচপি সংস্করণে আগে5.4.0RC8 এর জন্য তৃতীয় মান সম্ভব ছিল PHP_EOL: "\r"(ম্যাকোএসএক্স সার্ভারগুলিতে)। এটি ভুল ছিল এবং 2012-03-01 এ বাগ 61193 সহ স্থির করা হয়েছে ।

অন্যরা ইতিমধ্যে আপনাকে বলেছে, আপনি যে PHP_EOLকোনও ধরণের আউটপুট (যেখানে থাকতে পারেন) ব্যবহার করতে পারেন কোনো যেখানে আপনি একীভূত চাই: - এইচটিএমএল, এক্সএমএল, লগ ... মত এই মান বৈধ হয়) নতুন লাইন । মনে রাখবেন এটি এমন একটি সার্ভার যা এটি ক্লায়েন্টকে নয়, মান নির্ধারণ করে। আপনার উইন্ডোজ দর্শকরা আপনার ইউনিক্স সার্ভার থেকে মানটি পাবেন যা তাদের জন্য মাঝে মাঝে অসুবিধে হয়।

আমি কেবল PHP_EOLপিএইচপি উত্সগুলি দ্বারা সমর্থিত সম্ভাব্য মানগুলি দেখাতে চেয়েছিলাম কারণ এটি এখানে এখনও প্রদর্শিত হয়নি ...


3
কি দারুন. পিএইচপি বিকাশকারীরা এই সম্পর্কে ঠিক ভুল। উইকিপিডিয়া লিঙ্ক হিসাবে আপনি উল্লেখ করেছেন, ম্যাক ওএস 9 এবং তার আগে "\ r" ব্যবহৃত হয়েছিল, তবে ওএস এক্স নয়, যা "\ n" ব্যবহার করে। কারও একটি বাগ রিপোর্ট ফাইল করা উচিত ...
imgx64

27
@ imgx64 হ্যাঁ, তবে সত্যিই কি আপনি কখনও প্রোডাকশন ম্যাক সার্ভার দেখেছেন?
আলেকজভি

3
@ imgx64 এটি আপনার পোস্টের পরে 33 দিন স্থির করা হয়েছে :) আমি বর্তমান উত্স প্রতিফলিত করতে আমার উত্তর আপডেট করেছি।
আলেকজভি

2
আউটপুট (!) এর জন্য PHP_EOL ব্যবহার করার যুক্তিটি বৈধ বলে আমি মনে করি না। পিএইচপি_ইওএল সার্ভার-সাইডে থাকে যখন আউটপুটটি সাধারণত ক্লায়েন্টের জন্য থাকে (যা বিভিন্ন লাইন সমাপ্তির সীমানা ব্যবহার করে)। উদাহরণ: আপনি যদি পিএইচপি_ইএল দিয়ে একটি লিনাক্স সিস্টেমে একটি বহু-লাইন প্লেইন পাঠ্য আউটপুট তৈরি করেন এবং এটি একটি উইন্ডোজ সিস্টেমে প্রেরণ করেন তবে এটি কোনও বৈধ লাইন সমাপ্ত ডিলিমিটার হবে না - এটি নির্ভর করবে কোন ক্লায়েন্ট সফ্টওয়্যার আউটপুট প্রদর্শন করবে। ব্রাউজার এবং কিছু পাঠ্য সম্পাদক সম্ভবত এটি পরিচালনা করতে পারে তবে আপনি যদি নোটপ্যাডে উদাহরণটি পাঠ্যটি দেখেন তবে সবকিছুই এক লাইনে থাকবে।
স্ট্যান ই

php -r "echo addcslashes(PHP_EOL, PHP_EOL), PHP_EOL;"খুঁজে বের করতে.
বব স্টেইন

81

আপনি PHP_EOLযখন নতুন লাইন চান তখন ব্যবহার করুন এবং আপনি ক্রস প্ল্যাটফর্ম হতে চান।

আপনি যখন ফাইল সিস্টেমে (লগ, রফতানি, অন্যান্য) ফাইল লিখছেন তখন এটি হতে পারে।

আপনি যদি উত্পন্ন এইচটিএমএলকে পঠনযোগ্য হতে চান তবে আপনি এটি ব্যবহার করতে পারেন। সুতরাং আপনি আপনার <br />সাথে অনুসরণ করতে পারেন PHP_EOL

আপনি যদি ক্রোন থেকে স্ক্রিপ্ট হিসাবে পিএইচপি চালিয়ে যাচ্ছেন এবং আপনার কোনও আউটপুট তৈরি করতে হবে এবং এটি কোনও স্ক্রিনের জন্য ফর্ম্যাট করা দরকার You

আপনি এটি ব্যবহার করতে পারেন যদি আপনি কোনও ফর্ম্যাটিংয়ের প্রয়োজন হয় এমন ইমেল প্রেরণ করতে যাচ্ছেন।


25
এইচটিএমএল তৈরি করার সময় আপনাকে প্ল্যাটফর্ম-স্বতন্ত্র নিউলাইনগুলি ব্যবহার করার দরকার নেই।
রব

6
@ রব, আইই এর পুরানো সংস্করণগুলি যদি আমাকে আরও ভাল পৃষ্ঠা-উত্স দর্শক দেয় তবে উইন্ডোজ নোটপ্যাড আমি আপনার সাথে একমত হতে পারি।
জোরডাচে

14
@ জোরেদাচে - পিএইচপি যে প্ল্যাটফর্মের পৃষ্ঠাগুলি অ্যাক্সেস করছে সেটির জন্য প্রয়োজনীয় নয় এমন এই প্ল্যাটফর্মের জন্য উপযুক্ত এই নতুন এইচটিএমএল তৈরি করা হবে।
ডোমিনিক রজার

2
ইমেল বিল্ডিংয়ের উল্লেখের জন্য +1 $header = "From: $from" . PHP_EOL; $header .= "Reply-To: $from" . PHP_EOL; $header .= "Return-Path: $from" . PHP_EOL;
জাকব কোসোরোবা

49
PHP_EOLইমেল শিরোনাম পৃথক করার জন্য ব্যবহার করা উচিত নয়। পিএইচপি মেল ম্যানুয়াল অনুসারে , একাধিক অতিরিক্ত শিরোনামকে একটি সিআরএলএফ (\ r \ n) দিয়ে পৃথক করা উচিত।
হালিল Özgür

19

PHP_EOL (স্ট্রিং) এই প্ল্যাটফর্মের জন্য সঠিক 'শেষের লাইনের' প্রতীক। পিএইচপি 4.3.10 এবং পিএইচপি 5.0.2 থেকে উপলব্ধ

আপনি যখন এই সার্ভারের ফাইল সিস্টেমে পাঠ্য ফাইলগুলি পড়েন বা লিখেন তখন আপনি এই ধ্রুবকটি ব্যবহার করতে পারেন।

বেশিরভাগ ক্ষেত্রেই লাইন সমাপ্তি গুরুত্বপূর্ণ নয় কারণ বেশিরভাগ সফ্টওয়্যার তাদের উত্স নির্বিশেষে পাঠ্য ফাইলগুলি পরিচালনা করতে সক্ষম। আপনার কোডের সাথে সামঞ্জস্য থাকা উচিত।

লাইন সমাপ্তিগুলি যদি গুরুত্বপূর্ণ হয় তবে ধ্রুবকটি ব্যবহার না করে স্পষ্টভাবে লাইন শেষগুলি নির্দিষ্ট করুন। উদাহরণ স্বরূপ:

  • HTTP শিরোনাম অবশ্যই আবশ্যক আলাদা হবে\r\n
  • সিএসভি ফাইলগুলির সারি বিভাজক হিসাবে ব্যবহার করা উচিত\r\n

5
"HTTP শিরোনাম অবশ্যই হতে হবে ...": ietf.org/rfc/rfc2616.txt অধ্যায় 4 বিভাগ 1
অ্যাড্রিয়ান ফেডার

2
এসএমটিপি মেসেজ লাইনগুলি অবশ্যই শেষ করতে হবে\r\n
বব স্টেইন

12

আমি এমন একটি উত্তর দিতে চাই যা "যখন কখন নয় " ঠিক করে এটি ব্যবহার করতে" হিসেবে এটা এখনো আবৃত নয় হয়েছে এবং কল্পনা করতে পারেন এটি অন্ধভাবে ব্যবহৃত হচ্ছে এবং কোন ঠাহর এক সেখানে পরে লাইন নিচে পর্যন্ত কোন সমস্যা নয়। এর মধ্যে কয়েকটি বিদ্যমান উত্তরগুলির সাথে কিছুটা বিরোধিতা করে।

যদি HTML এ একটি ওয়েব পেজ থেকে outputting, বিশেষ করে পাঠ্য <textarea>, <pre>অথবা <code>আপনি সম্ভবত সবসময় ব্যবহার করতে চান \nএবং PHP_EOL

এর কারণ হ'ল কোডটি যখন একটি সেভারে ভাল কাজ করতে পারে - যা ইউনিক্সের মতো প্ল্যাটফর্ম হিসাবে দেখা যায় - যদি কোনও উইন্ডোজ হোস্টে স্থাপন করা হয় (যেমন উইন্ডোজ অ্যাজুরি প্ল্যাটফর্ম) তবে কোনও ব্রাউজারে পৃষ্ঠা কীভাবে প্রদর্শিত হবে তা পরিবর্তন করতে পারে (বিশেষত ইন্টারনেট এক্সপ্লোরার - এর কয়েকটি সংস্করণ both n এবং both r উভয়ই দেখতে পাবে)।

আমি নিশ্চিত নই যে এটি এখনও আই 6 since এর পরে একটি সমস্যা আছে বা না, তাই এটি মোটামুটি মোটা হতে পারে তবে এটি প্রাসঙ্গিকতা সম্পর্কে ভাবতে জনগণকে প্রম্পট করতে সহায়তা করে কিনা তা উল্লেখযোগ্য মনে হয়। অন্যান্য ক্ষেত্রেও থাকতে পারে (যেমন কঠোর এক্সএইচটিএমএল) যেখানে খুব সহজেই আউটপুট হয়\r কিছু প্ল্যাটফর্মে খুব আউটপুট নিয়ে সমস্যা হতে পারে এবং আমি নিশ্চিত যে এর মতো আরও প্রান্তের কেস রয়েছে।

ইতিমধ্যে কারও দ্বারা উল্লিখিত হিসাবে, আপনি HTTP শিরোনাম ফেরত দেওয়ার সময় এটি ব্যবহার করতে চাইবেন না - কারণ তাদের যে কোনও প্ল্যাটফর্মে সর্বদা আরএফসিটি অনুসরণ করা উচিত।

আমি এটিকে CSV ফাইলগুলিতে ডিলিমিটারের মতো কোনও কিছুর জন্য ব্যবহার করব না (যেমন কেউ পরামর্শ দিয়েছেন)। সেভার প্ল্যাটফর্মটি চলমান প্ল্যাটফর্মটি উত্পন্ন বা গ্রাস করা ফাইলগুলিতে লাইন শেষ নির্ধারণ করা উচিত নয়।


10

আমি পিএইচপি_ইএল ফাইল হ্যান্ডলিংয়ের জন্য খুব দরকারী বলে খুঁজে পেয়েছি, বিশেষত যদি আপনি কোনও ফাইলে একাধিক লাইনের বিষয়বস্তু লিখছেন।

উদাহরণস্বরূপ, আপনার একটি দীর্ঘ স্ট্রিং রয়েছে যা আপনি সরল ফাইলটিতে লেখার সময় একাধিক লাইনে বিভক্ত করতে চান। \ R \ n ব্যবহার করা সম্ভবত কাজ করতে পারে না তাই আপনার স্ক্রিপ্টে পিএইচপি_ইওল রাখুন এবং ফলাফলটি দুর্দান্ত।

নীচে এই সাধারণ উদাহরণটি দেখুন:

<?php

$output = 'This is line 1' . PHP_EOL .
          'This is line 2' . PHP_EOL .
          'This is line 3';

$file = "filename.txt";

if (is_writable($file)) {
    // In our example we're opening $file in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $output will go when we fwrite() it.
    if (!$handle = fopen($file, 'a')) {
         echo "Cannot open file ($file)";
         exit;
    }
    // Write $output to our opened file.
    if (fwrite($handle, $output) === FALSE) {
        echo "Cannot write to file ($file)";
        exit;
    }
    echo "Success, content ($output) wrote to file ($file)";
    fclose($handle);
} else {
    echo "The file $file is not writable";
}
?>

3
\ n \ n দ ক্রম হিসেবে কাজ পান \ r \ N হতে বোঝানো হয় না </ পণ্ডিতিপনা>
frak

10

না, পিএইচপি_ইএল এন্ডলাইন সমস্যাগুলি হ্যান্ডেল করে না, কারণ আপনি যে ধরণের ধ্রুবকটি ব্যবহার করেন সেই সিস্টেমটি সেই সিস্টেম নয় যেখানে আপনি আউটপুট প্রেরণ করেন।

আমি পিএইচপি_ইএল ব্যবহার করার পরামর্শ দিই না। ইউনিক্স / লিনাক্সের ব্যবহার \ n, ম্যাকোস / ওএস এক্স \ r থেকে \ n এ পরিবর্তিত হয়েছে এবং উইন্ডোজে অনেক অ্যাপ্লিকেশন (বিশেষত ব্রাউজারগুলি) এটি সঠিকভাবে প্রদর্শন করতে পারে। উইন্ডোজে, বিদ্যমান ক্লায়েন্ট-সাইড কোডটি কেবল \ n ব্যবহারের জন্য সহজ এবং সহজেই পশ্চাদপদ-সামঞ্জস্য বজায় রাখা সহজ: কেবল লাইন ছাঁটাইয়ের জন্য ডিলিমেটারটি \ r \ n থেকে \ n এ রূপান্তর করুন এবং এটি ফাংশনের মতো একটি ট্রিম () এ মোড়ক করুন ।


3
আমার উত্তরটি কেন নিম্নমানের তা জানতে পেরে ভালো লাগবে ... ক্রেজি ... গৃহীত উত্তরটি ভুল , আমার উত্তর সঠিক is পিএইচপি_ইএল সমস্যাটি পরিচালনা করে বলে সাধারণত বলা যায় না। একই সিস্টেমে / থেকে কেবল কিছু পড়তে বা লিখলে এটি ব্যবহার করা যেতে পারে (এবং হওয়া উচিত) । তবে বেশিরভাগ সময় পিএইচপি ক্লায়েন্টকে কিছু পাঠানোর জন্য ব্যবহৃত হয় (যা সম্ভবত প্রশ্নকর্তা কী ভেবেছিলেন)) আবার: PHP_EOL একটি খাঁটি সার্ভার-সাইড ধ্রুবক। এটি ক্লায়েন্ট সাইড লাইন বিরতি সঠিকভাবে পরিচালনা করে না (এবং করতে পারে না)। একটি মন্তব্য লিখুন এবং আমাকে বলুন, আপনি যদি মনে করেন যে আমি কিছু ভুল লিখেছি।
StanE

3
শস্যের বিরুদ্ধে ভাল পয়েন্ট দেওয়ার জন্য +1। আমি মনে করি এটি হারিয়ে গেছে কারণ ব্রাউজারগুলি এইচটিএমএলগুলিতে হোয়াইটস্পেস সরবরাহ করে না, তাই সাধারণ ব্যবহারটি কনসোল অ্যাপ্লিকেশনগুলির জন্য be এবং যেমনটি আপনি বলেছেন, সেক্ষেত্রে লাইন সমাপ্তিকে কার্যকরকারী পরিবেশের জন্য ব্যাখ্যা করা হবে, যা কনসোল অ্যাপ্লিকেশনগুলির জন্য অর্থবোধ করে তবে ক্লায়েন্ট-সার্ভার ওয়েব অ্যাপ্লিকেশনগুলিতে নয়।
জেফ পেকেট

ঠিক আছে, উত্তরটি আসলে সম্পর্কিত নয়। আপনি ব্রাউজারের সামঞ্জস্যতা এবং অন্যান্য সিস্টেমে ফাইল প্রেরণের উল্লেখ করেছেন। পাঠ্য আউটপুটে নিউলাইন প্রাসঙ্গিক, সুতরাং ব্রাউজারগুলি প্রাসঙ্গিক নয়। আর তোমার মূল বিন্দু বিপরীত, এই পাঠ্য ফাইল হয় সাধারণত তারা লেখা করছি একই প্ল্যাটফর্মে পুড়িয়ে ফেলল।
গ্র্যান্টপর্কস

6

PHP_EOL এর সংজ্ঞাটি হ'ল এটি আপনাকে যে অপারেটিং সিস্টেমটিতে কাজ করছে তার নতুন লাইনের চরিত্র দেয়।

অনুশীলনে, আপনার প্রায় কখনও এটি প্রয়োজন হবে না। কয়েকটি বিষয় বিবেচনা করুন:

  • আপনি যখন ওয়েবে আউটপুট দিচ্ছেন, সত্যিকার অর্থে কোনও কনভেনশন নেই যা আপনার সামঞ্জস্যপূর্ণ হওয়া উচিত। যেহেতু বেশিরভাগ সার্ভারগুলি ইউনিক্সি তাই আপনি যাইহোক একটি "\ n" ব্যবহার করতে চান।

  • আপনি যদি কোনও ফাইলে আউটপুট দিচ্ছেন, তবে PHP_EOL ভাল ধারণা বলে মনে হতে পারে। তবে, আপনি আপনার ফাইলের অভ্যন্তরে আক্ষরিক নিউলাইন রেখে একইরকম প্রভাব ফেলতে পারবেন এবং আপনি যদি ইউনিক্সে বিদ্যমান নতুন লাইনগুলি ক্লোবার্ব না করে (দ্বৈত-বুট সিস্টেম সহ লোক হিসাবে) কিছু সিআরএলএফ ফর্ম্যাট করা ফাইল চালানোর চেষ্টা করছেন তবে এটি আপনাকে সাহায্য করবে , আমি বলতে পারি যে আমি পরবর্তী আচরণটি পছন্দ করি)

পিএইচপি_ইওএল এত হাস্যকরভাবে দীর্ঘ যে এটি ব্যবহার করার পক্ষে এটি সত্যই নয়।


33
"PHP_EOL এর জন্য -1 এত হাস্যকরভাবে দীর্ঘ"। এটি কোনও বৈধ যুক্তি নয়।
viam0Zah

1
আমি আপনার সাথে একমত। * নিক্স ব্যতীত অন্য কোনও ক্ষেত্রে পিএইচপি স্থাপনের কোনও ধারণা নেই। সুতরাং - PHP_EOL বা DIRECTORY_SEPARATOR ব্যবহার করার কোনও মানে নেই।
স্ট্যান

@ স্ট্যান আপনি কি "নিক্স ব্যতীত পিএইচপি লাগানোর কোনও বুদ্ধি নেই" সম্পর্কে আপনার বক্তব্যটি ব্যাখ্যা করতে পারেন?
সাজুউক

2
@ সাজুউক আমি বিশ্বাস করি যে "ব্যঙ্গাত্মক" বলা হবে।
ফলিক্স গাগনন-গ্রেনিয়ার

3

একটি কার্যকর জায়গা রয়েছে যেখানে এটি কার্যকর হতে পারে: আপনি যখন এমন কোড লিখছেন যা মূলত একক উদ্ধৃতি স্ট্রিং ব্যবহার করে। এটি বিতর্কযোগ্য কিনা:

echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;  
echo 'this other $one'."\n";

এর শিল্পটি ধারাবাহিক হতে হবে। '' এবং '' মেশানো এবং মিলে যাওয়ার সমস্যাটি হ'ল আপনি যখন দীর্ঘ স্ট্রিং পান, তখন আপনি কী ধরণের উদ্ধৃতি ব্যবহার করেছেন তা সন্ধান করতে চাই না।

জীবনের সমস্ত জিনিসের মতো এটি প্রসঙ্গে নির্ভর করে।


3

ডস / উইন্ডোজ স্ট্যান্ডার্ড "নিউলাইন" হ'ল সিআরএলএফ (= \ r \ n) এবং এলএফসিআর (\ n \ r) নয়। যদি আমরা পরে রাখি তবে এটি সম্ভবত কিছু অপ্রত্যাশিত (ভাল, বাস্তবে, প্রত্যাশিত ধরণের!: ডি) আচরণ তৈরি করতে পারে।

আজকাল প্রায় সমস্ত (সুস্পষ্ট লিখিত) প্রোগ্রামগুলি নিউলাইন কোডের জন্য ইউনিক্স স্ট্যান্ডার্ড এলএফ () n) গ্রহণ করে, এমনকি মেল প্রেরক ডেমোনস (আরএফসি সিআরএলএফকে শিরোনাম এবং বার্তার মূল অংশের জন্য নতুন লাইন হিসাবে সেট করে )।


2

আপনি একাধিক লাইন আউটপুট দিলে ত্রুটি_লগ () সহকারে কার্যকর Hand

বিকাশকারীরা স্ট্রিংগুলি ভেঙে ফেলার সময় বিকাশকারীরা ইউনিক্স এন্ডিং ধরে নিয়েছে বলে আমার উইন্ডো ইনস্টলটিতে অনেকগুলি ডিবাগ বিবৃতি অদ্ভুত দেখাচ্ছে।


2

আমি লিখতে হয়েছিল এমন কয়েকটি কমান্ড লাইনের স্ক্রিপ্টগুলিতে PHP_EOL ধ্রুবক ব্যবহার করি। আমি আমার স্থানীয় উইন্ডোজ মেশিনে বিকাশ করি এবং তারপরে একটি লিনাক্স সার্ভার বাক্সে পরীক্ষা করি। ধ্রুবকটির অর্থ ব্যবহার করে আমাকে বিভিন্ন প্ল্যাটফর্মের প্রতিটিটির জন্য সঠিক লাইনটি শেষ হওয়ার বিষয়ে চিন্তা করতে হবে না।


2

আমার একটি সাইট রয়েছে যেখানে কোনও লগিং-স্ক্রিপ্ট ব্যবহারকারীর কাছ থেকে একটি ক্রিয়াকলাপের পরে পাঠ্যপুস্তকে একটি নতুন লাইন লেখায়, যিনি কোনও ওএস ব্যবহার করতে পারেন।

PHP_EOL ব্যবহার করা এক্ষেত্রে অনুকূল বলে মনে হয় না। যদি ব্যবহারকারী ম্যাক ওএসে থাকে এবং টেক্সটফাইলে লিখেন \ n। উইন্ডোজ কম্পিউটারে টেক্সটফিলটি খোলার সময় এটি একটি লাইন বিরতি প্রদর্শন করে না। এই কারণে আমি তার পরিবর্তে "\ r \ n" ব্যবহার করি যা কোনও ওএসে ফাইল খোলার সময় কাজ করে।


1

আপনি এমন কোড লিখছেন যা মূলত একক উদ্ধৃতি স্ট্রিং ব্যবহার করে।

echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;  
echo 'this other $one'."\n";

0

আমি ওয়েবক্যালেন্ডারটি ব্যবহার করছি এবং খুঁজে পেলাম যে ম্যাক আইসিএল বার্ফগুলি একটি উত্পাদিত আইসিএস ফাইল আমদানি করতে পারে কারণ লাইনটির শেষ প্রান্তটি xcal.php এ "\ r \ n" হিসাবে হার্ডকোডযুক্ত। আমি andুকে গিয়ে সমস্ত ঘটনা পিএইচপি_ইএল দিয়ে প্রতিস্থাপন করেছি এবং এখন আইসিএল খুশি! আমি এটি ভিস্তার উপরও পরীক্ষা করেছি এবং আউটলুক ফাইলটি আমদানি করতে সক্ষম হয়েছিল, যদিও লাইন চরিত্রের শেষ "\ n" হয়।


<late> এর অর্থ এটি যখন উইন্ডোজ সার্ভারে স্থাপন করা হয় তখন আপনার অ্যাপ্লিকেশনটি খারাপ হয়ে যাবে। আপনি যদি চান তবে \nতা স্পষ্টভাবে ব্যবহার করুন।
ডাস্কউফ -অ্যাক্টিভ-

0

যখন জুমি (পিএইচপি জন্য জুমলা প্লাগইন) কোনও কারণে আপনার কোডটি সংকলন করে এটি আপনার কোড থেকে সমস্ত ব্যাকস্ল্যাশ সরিয়ে দেয়। যেমন কিছু$csv_output .= "\n"; হয়ে যায়$csv_output .= "n";

খুব বিরক্তিকর বাগ!

আপনি পরে ছিলেন ফলাফল পেতে পরিবর্তে PHP_EOL ব্যবহার করুন।


2
আমি সত্যিই সত্যিই আশা করব এটি একটি কনফিগারেশন সমস্যা যা আপনি এখনও খুঁজে পান নি। আমি জুমলা ব্যবহার করিনি, তবে সত্যিই এটি কীভাবে কাজ করে তা যদি ভয়াবহ আচরণ হয়!
jon_darkstar

0

কিছু ধরণের সিস্টেমে এই ধ্রুবকটি ব্যবহার করা কার্যকর হতে পারে কারণ, উদাহরণস্বরূপ, আপনি যদি কোনও ইমেল প্রেরণ করছেন, আপনি আরও সিস্টেমে ক্রস-সিস্টেম স্ক্রিপ্ট ব্যবহার করার জন্য PHP_EOL ব্যবহার করতে পারেন ... তবে এটি কার্যকর থাকলেও আপনি এটি খুঁজে পেতে পারেন ধ্রুবক অপরিজ্ঞাত, সর্বশেষ পিএইচপি ইঞ্জিন সহ আধুনিক হোস্টিংয়ের এই সমস্যাটি নেই তবে আমি মনে করি যে ভাল জিনিসটি এই পরিস্থিতিটি সংরক্ষণ করে একটি বিট কোড লিখবে:

<?php
  if (!defined('PHP_EOL')) {
    if (strtoupper(substr(PHP_OS,0,3) == 'WIN')) {
      define('PHP_EOL',"\r\n");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'MAC')) {
      define('PHP_EOL',"\r");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'DAR')) {
      define('PHP_EOL',"\n");
    } else {
      define('PHP_EOL',"\n");
    }
  }
?>

সুতরাং আপনি সমস্যা ছাড়াই পিএইচপি_ইএল ব্যবহার করতে পারেন ... স্পষ্টতই পিএইচপি_ইএল স্ক্রিপ্টে ব্যবহার করা উচিত যা আরও একবারে আরও সিস্টেমে কাজ করা উচিত অন্যথায় আপনি \ n বা \ r বা \ r \ n ব্যবহার করতে পারেন ...

দ্রষ্টব্য: PHP_EOL হতে পারে

1) on Unix    LN    == \n
2) on Mac     CR    == \r
3) on Windows CR+LN == \r\n

এই উত্তর সাহায্য আশা করি।


0

উইন্ডোজ ক্লায়েন্টের কাছে আউটপুট দেওয়ার সময় আমি এই সমস্যাটি কেবল अनुभव করেছি। অবশ্যই, PHP_EOL সার্ভার সাইডের জন্য, তবে পিএইচপি থেকে বেশিরভাগ সামগ্রীর আউটপুট উইন্ডো ক্লায়েন্টদের জন্য for সুতরাং আমাকে আমার অনুসন্ধানগুলি পরবর্তী ব্যক্তির জন্য এখানে রাখতে হবে।

ক) 'আমার পাঠ্য' প্রতিধ্বনি করুন। PHP_EOL; // খারাপ কারণ এটি কেবলমাত্র আউটপুট করে \ n এবং উইন্ডোজ নোটপ্যাডের বেশিরভাগ সংস্করণ এটিকে একক লাইনে প্রদর্শন করে এবং বেশিরভাগ উইন্ডোজ অ্যাকাউন্টিং সফ্টওয়্যার এই ধরণের লাইন চরিত্রের শেষটি আমদানি করতে পারে না।

খ) 'আমার পাঠ্য \ r \ n' প্রতিধ্বনি; // খারাপ কারণ একক উদ্ধৃত পিএইচপি স্ট্রিং interpret r \ n ব্যাখ্যা করে না

গ) "আমার পাঠ্য" r \ n "প্রতিধ্বনি; // ইয়ে এটি কাজ করে! নোটপ্যাডে সঠিক দেখাচ্ছে এবং অন্য উইন্ডোজ সফ্টওয়্যার যেমন উইন্ডোজ অ্যাকাউন্টিং এবং উইন্ডোজ উত্পাদন সফ্টওয়্যারটিতে ফাইলটি আমদানি করার সময় কাজ করে।


-2

আমি use n \ r ব্যবহার করতে পছন্দ করি। এছাড়াও আমি একটি উইন্ডোজ সিস্টেমে আছি এবং experience n আমার অভিজ্ঞতায় ঠিক কাজ করে।

যেহেতু পিএইচপি_ইএল নিয়মিত প্রকাশের সাথে কাজ করে না, এবং এগুলি পাঠ্যের সাথে ডিল করার সবচেয়ে কার্যকর উপায়, তবে আমি সত্যিই এটি কখনই ব্যবহার করি নি বা এর প্রয়োজনও নেই।


12
: NEWLINE গৃহস্থালির কাজ আদেশ, এটা পান \ r \ হতে এন (সি আর + + এলএফ) উচিত সঙ্গে সতর্ক থাকুন en.wikipedia.org/wiki/Newline
azkotoki

আপনি এটি ব্যবহার করেন না তবে আপনার সাইটটি যে কোনও পিসিতে যে কোনও একটি দ্বারা উন্মুক্ত হতে পারে তাই এটি কোনও সমস্যা হতে পারে
ওয়াইজ ইউসুফি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.