পিএইচপি - কিভাবে একটি নতুন লাইন চরিত্র তৈরি করতে?


405

পিএইচপি-তে আমি একটি নতুন লাইন চরিত্র তৈরি করার চেষ্টা করছি:

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

এর পরে আমি নোটপ্যাডে তৈরি ফাইলটি খুলি এবং এটি আক্ষরিক অর্থেই নতুন লাইনটি লিখে দেয়:

1 জন দোআর \ n 1 জন দোআর \ n জন জন দোআর \ n

আমি এর বিভিন্ন প্রকারের চেষ্টা করেছি \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
@ পেসারিয়র একক উদ্ধৃত স্ট্রিংয়ে ক্যারেজ রিটার্ন এবং নতুন লাইন অক্ষরের একমাত্র উপায় হ'ল সরাসরি কীবোর্ডের মাধ্যমে অক্ষর প্রবেশ করানো হয় (লাইন শেষের দিকে আপনার সম্পাদকের সেটিংসের উপর নির্ভর করে এন্টার টিপুন)। অন্যথায় কেবল স্ট্রিং কনটেনটেশন ব্যবহার করুন।
গম্বো

1
@ গম্বো: আপনি বলছেন একক উদ্ধৃত স্ট্রিংগুলি, অন্যদিকে, কেবল পালানোর ক্রমগুলি \\ এবং \ 'জানি। তবে আমি <? পিএইচপি প্রতিধ্বনি হিসাবে 'আপনি ইন্টারনেট এক্সপ্লোরার ব্যবহার করছেন' প্রতিধ্বনি 'নতুন লাইন যুক্ত'; ?> এবং ব্রাউজারে আউটপুট দেখেছি। এটি আক্ষরিকভাবে আমি প্রদর্শিত দুটি স্ট্রিংয়ের মধ্যে নতুন লাইন যুক্ত করেছি। এর অর্থ হল - বা <br/> অক্ষরটি একক উদ্ধৃত স্ট্রিংয়ে প্রসারিত হয়। এই তিনটি ছাড়াও কি অন্য কোনও এইচটিএমএল অক্ষর রয়েছে যা একক উদ্ধৃত স্ট্রিংয়ের মধ্যে পিএইচপি দ্বারা বোঝা যায়? আমি অনুরোধ করছি অনুরূপ অনুরোধ অনুসারে আপনার উত্তর আপডেট করুন। ধন্যবাদ.
পিএইচপিফ্যান

1
@ user2839497 আপনি যা বলছেন তাতে কোনও লাভ হয় না। এখানে কোনও ব্রাউজারের প্রসঙ্গ নেই। এবং অবশ্যই একটি ব্রাউজার যখন একটি <br/> মুখোমুখি হয় তখন একটি নতুন লাইন রেন্ডার করে। এবং অবশ্যই এমন কিছু নেই যা আপনাকে একক উদ্ধৃত স্ট্রিংয়ে '<br/>' যোগ করতে বাধা দেয়। তবে এটি একটি সাধারণ পাঠ্য ফাইলে একটি নতুন লাইন রেন্ডার করে না।
ফেনসার

1
@ পেসারিয়ার এক সম্পাদকীয় পংক্তির পরিবর্তে সম্পাদকের পংক্তির পরিবর্তে গাম্বো তাঁর মন্তব্যে পরামর্শ দিয়েছিলেন যে আপনি গম্বোস উত্তরের অন্যান্য সমাধানটি ব্যবহার করতে পারেন, উদাহরণস্বরূপ: 'একটি নতুনরেখা'.chr (0x0A) আউটপুট করা।' '।
ফেনসার

2
PHP_EOLপরিবর্তে আপনার ব্যবহার করা উচিত
কুর্ডপেইজ

233

পূর্বনির্ধারিত PHP_EOLধ্রুবকটি ব্যবহার করুন :

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

অবিচ্ছিন্ন মান অপারেটিং সিস্টেমের লাইন শেষ অনুসারে সেট করা হবে যেখানে পিএইচপি এক্সিকিউট করছে। লিনাক্সে, এটি হবে "\n"; উইন্ডোজ, এটি হবে "\r\n"


96

পিএইচপি-র "প্রতিধ্বনি" কমান্ডটি ব্রাউজারে কাঁচা এইচটিএমএল হিসাবে আউটপুট প্রেরণ করে তাই ডাবল উদ্ধৃতিতে ব্রাউজারটি এটি দুটি লাইনে বিভক্ত করবে না কারণ এইচটিএমএল-এ একটি নতুন লাইন অক্ষরের অর্থ কিছুই নেই। এজন্য আপনাকে হয় ব্যবহার করতে হবে:

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

"প্রতিধ্বনি" ব্যবহার করার সময়, বা পরিবর্তে fwrit ব্যবহার করুন ...

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

এটি "\ n" এর জায়গায় এইচটিএমএল নিউলাইনটিকে আউটপুট দেবে।


4
প্রশ্নটি যেভাবে জিজ্ঞাসা করা হয়েছে, সম্ভবত এটি এইচটিএমএল হিসাবে রেন্ডার করা যাবে না বা পার্সিং বা সরল পাঠ্য পাঠের জন্য কোনও টেক্সটবক্স বা জাভাস্ক্রিপ্ট ইত্যাদিতে এই তথ্য
আউটপুট দিচ্ছেন

43

প্ল্যাটফর্ম যাই হোক না কেন সঠিক অক্ষর পেতে ধ্রুবক PHP_EOL ব্যবহার করুন।

http://us3.php.net/manual/en/reserved.constants.php

একটি সাধারণ ব্যবহারের উদাহরণ:

<?php
$data = 'First line' . PHP_EOL .
        'Second line' . PHP_EOL .
        'Third line';

file_put_contents("filename.txt", $data);
?>

23

ডাবল উদ্ধৃতিগুলির মধ্যে স্ট্রিংগুলি ""বিভক্ত হয়, যার অর্থ তারা পালানো অক্ষরগুলিকে মুদ্রণযোগ্য অক্ষরে রূপান্তর করে।

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

আপনার উভয় একই লাইনে থাকতে পারে:

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

আউটপুট:

$clientid $lastname
1 John Doe

পিএইচপি-র বিভিন্ন ধরণের স্ট্রিং নোটেশন সম্পর্কে আপনার ব্যাখ্যা ঠিক আছে কারণ এটি প্রশ্ন লেখকের দ্বারা তৈরি ত্রুটিটি দেখায়। তবে আপনার কোডের নমুনাটি প্রত্যাশিত ফলাফল তৈরি করবে না কারণ ভেরিয়েবলগুলি একক উদ্ধৃত স্ট্রিংয়ে ব্যবহৃত হয় এবং যেমনটি আপনি উল্লেখ করেছেন, সেগুলি বিভক্ত হবে না!
ড্যামিয়েন ফ্ল্যামেন্ট

@ ড্যামিয়েন ফ্ল্যামেন্ট, এটিই আমি বলেছিলাম - একক উদ্ধৃতিগুলির মধ্যে থাকা বিষয়বস্তুগুলি আন্তঃবিবাহিত নয়, তবে দ্বিগুণ উদ্ধৃতিগুলির মধ্যে থাকা সামগ্রীগুলি। সম্ভবত আমার উদাহরণটি বিভ্রান্তিকর কারণ আপনি আক্ষরিক "$ ক্লাইনেটেড" এবং "$ লাস্টনাম" এর পরিবর্তে $ জলবায়ু এবং $ লাস্টনামের সামগ্রীগুলি দেখার আশা করছেন। আমি মনে করি এটি একটি সারণীর শিরোনাম ছিল যা আমি ডিবাগিংয়ের সময় ব্যবহার করেছি। নিম্নলিখিত লাইনগুলি হতecho "$clientid $lastname\r\n"
কেভিন এস মিলার

"প্রত্যাশিত ফলাফল" লেখার সময়, আমি প্রশ্নকর্তা এর প্রশ্নের প্রত্যাশার ফলাফল সম্পর্কে কথা বলছি। আপনার মন্তব্যে দেখানো কোডটি আপনার উত্তরে যুক্ত করা এবং ফলাফল দেখানো আপনার উত্তরের গুণমান উন্নত করতে পারে।
ডেমিয়েন ফ্ল্যামেন্ট


13

প্রকৃতপক্ষে \r\nআউটপুটটির এইচটিএমএল পক্ষে। এই অক্ষরগুলির সাহায্যে আপনি এটিকে আরও পঠনযোগ্য করে তুলতে কেবল এইচটিএমএল কোডে একটি নতুন লাইন তৈরি করতে পারেন:

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

আউটপুট হবে:

<html>First line
Second line</html>

পৃষ্ঠাটি দেখা হবে:

First line Second line

যদি আপনি সত্যিই এটি বোঝাতে চান তবে আপনার কেবল "" উদ্ধৃতি দিয়ে একক উদ্ধৃতি ঠিক করতে হবে:

echo "\r\n";

অন্যথায় যদি আপনি পাঠ্যটি বিভক্ত করতে চান তবে আমাদের নমুনায় 'প্রথম লাইন' এবং 'দ্বিতীয় লাইন'তে আপনাকে এইচটিএমএল কোডটি ব্যবহার করতে হবে <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
আপনি যদি আপনার পিএইচপি স্ক্রিপ্টের সাহায্যে পাঠ্য ইমেলগুলি প্রেরণ করছেন তবে মনে রাখবেন, আপনার এখনও বিরতিগুলির পরিবর্তে (লাইন) সেই লাইন সমাপ্তির প্রয়োজন হবে
কেনিভি

9

w3school এইভাবে অফার করেছে:

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

এই ফাংশনটি ব্যবহার করে আপনি এটি করতে পারেন..আমি উপরে উল্লিখিত অন্য পদ্ধতিতে চেষ্টা করেছি তবে তারা আমাকে সাহায্য করবে না ..


প্রশ্নটি এইচটিএমএলে অনুচ্ছেদের মধ্যে একটি লাইন ভাঙ্গার বিষয়ে নয়। এটা নিউলাইন চরিত্র সম্পর্কে !
ড্যামিয়েন ফ্ল্যামেন্ট

প্রসঙ্গে, nl2br()ফাংশনটি নতুন লাইনের অক্ষরগুলিকে <br />এইচটিএমএল ট্যাগে রূপান্তর করে । এটি ব্রাউজার পৃষ্ঠাগুলিতে একটি নতুন লাইন তৈরি করার জন্য দরকারী হতে পারে তবে টেক্সট ফাইলগুলিতে একটি নতুন লাইন বা জাভাস্ক্রিপ্ট, বা স্ক্রিনে বা কনসোলে মুদ্রণের জন্য নয়।
শেরিলহোমান

4

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

প্রাক্তন 1।

 echo 'foo\nbar';

উদাহরণ 1 স্পষ্টত পছন্দসই ফলাফল মুদ্রণ করে না, তবে এটি সত্য হলেও আপনি একক উদ্ধৃতিতে একটি নতুন লাইন এড়াতে পারবেন না, আপনি এটি পেতে পারেন:

প্রাক্তন 2।

 echo 'foo
 bar';

উদাহরণ 2 এর ঠিক পছন্দসই আচরণ রয়েছে। দুর্ভাগ্যক্রমে lineোকানো নতুন লাইনটি অপারেটিং সিস্টেম নির্ভর। এটি সাধারণত কোনও সমস্যা নয়, কারণ ওয়েব ব্রাউজারগুলি / সার্ভারগুলি line r, \ r \ n, বা \ n হয় কিনা তা লাইনটিকে সঠিকভাবে ব্যাখ্যা করবে।

স্পষ্টতই এই সমাধানটি আদর্শ নয় যদি আপনি ফাইলটি অন্য উপায়ে একটি ওয়েব ব্রাউজার এবং একাধিক অপারেটিং সিস্টেমে বিতরণ করার পরিকল্পনা করেন। সেক্ষেত্রে আপনার অন্য একটি উত্তর দেখতে হবে।

নোট: একটি বৈশিষ্ট্য সমৃদ্ধ পাঠ্য সম্পাদক ব্যবহার করে আপনি বাইনারি অক্ষর (গুলি) হিসাবে একটি নতুন লাইন সন্নিবেশ করতে সক্ষম হওয়া উচিত যা ফাইল সম্পাদনা করার চেয়ে ভিন্ন অপারেটিং সিস্টেমে একটি নতুন লাইন উপস্থাপন করে। অন্য সমস্ত কিছু যদি ব্যর্থ হয় তবে বাইনারি আসকি চরিত্রটি সন্নিবেশ করানোর জন্য কেবল একটি হেক্স সম্পাদক ব্যবহার করে।


3

একটি পাঠ্য স্ট্রিংয়ে নতুনলাইনগুলি পেতে পিএইচপি nl2br ব্যবহার করুন ..

$ পাঠ্য = "মনু ভাল ছেলে (

প্রতিধ্বনি nl2br ($ পাঠ্য);

ফলাফল.

মনু ভাল ছেলে।

তিনি ভাল কোড করতে পারেন।


1
nl2brফাংশন সম্পর্কে newline অক্ষর পরিবর্তন করে <br />HTML ট্যাগটি। যদি স্ট্রিংটিতে কোনও নতুন লাইন অক্ষর না থাকে তবে এই ফাংশনটি কিছুই করবে না! তাছাড়া প্রশ্নটি এইচটিএমএলে অনুচ্ছেদের মধ্যে একটি লাইন ভাঙ্গার বিষয়ে নয়। এটা নিউলাইন চরিত্র সম্পর্কে !
ড্যামিয়েন ফ্ল্যামেন্ট

2

আমি একক উদ্ধৃতি এবং ডাবল উদ্ধৃতি উভয়ের মধ্যেই এই সমন্বয়টি চেষ্টা করেছি tried কিন্তু কেউ কাজ করেনি। পরিবর্তে ডাবল উদ্ধৃতিতে \nআরও ভাল ব্যবহার করুন <br/>। এটার মত..

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

প্রশ্নটি এইচটিএমএলে অনুচ্ছেদের মধ্যে একটি লাইন ভাঙ্গার বিষয়ে নয়। এটা নিউলাইন চরিত্র সম্পর্কে !
ড্যামিয়েন ফ্ল্যামেন্ট


2

যে কোনও প্রতিধ্বনি বিবৃতিগুলির জন্য, আমি সর্বদা <br>ডাবল উদ্ধৃতিগুলির ভিতরে ব্যবহার করি ।


2
প্রশ্নটি এইচটিএমএলে অনুচ্ছেদের মধ্যে একটি লাইন ভাঙ্গার বিষয়ে নয়। এটা নিউলাইন চরিত্র সম্পর্কে !
ড্যামিয়েন ফ্ল্যামেন্ট

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";

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