সরল, তাই না? ঠিক আছে, এটি কাজ করছে না: - \
$skuList = explode('\n\r', $_POST['skuList']);
\r\n
অন্য উপায়ে নয়।
সরল, তাই না? ঠিক আছে, এটি কাজ করছে না: - \
$skuList = explode('\n\r', $_POST['skuList']);
\r\n
অন্য উপায়ে নয়।
উত্তর:
ভাল অভ্যাস
প্রথম উত্তরের মন্তব্যে উল্লিখিত হিসাবে, সেরা অনুশীলন হ'ল পিএইচপি ধ্রুবক PHP_EOL ব্যবহার করা যা বর্তমান সিস্টেমটির EOL ( লাইনের শেষ ) প্রতিনিধিত্ব করে।
$skuList = explode(PHP_EOL, $_POST['skuList']);
পিএইচপি আরও অনেক দরকারী দরকারী ধ্রুবক সরবরাহ করে যা আপনি আপনার কোড সিস্টেমকে স্বাধীন করতে ব্যবহার করতে পারেন, দরকারী এবং সিস্টেমের স্বতন্ত্র ডিরেক্টরি নির্দেশকগুলি খুঁজে পেতে এই লিঙ্কটি দেখুন ।
সতর্কতা
এই ধ্রুবকগুলি আপনার পৃষ্ঠা সিস্টেমটিকে স্বতন্ত্র করে তোলে, তবে আপনি যখন অন্য সিস্টেমে সঞ্চিত ডেটা সহ ধ্রুবকগুলি ব্যবহার করেন তখন এক সিস্টেম থেকে অন্য সিস্টেমে যাওয়ার সময় আপনি সমস্যার মধ্যে পড়তে পারেন। নতুন সিস্টেমের ধ্রুবকগুলি পূর্ববর্তী সিস্টেমের থেকে পৃথক হতে পারে এবং সঞ্চিত ডেটা আর কাজ না করে। সুতরাং কোনও সিস্টেমের উপর নির্ভরশীল অংশগুলি সরাতে আপনার ডেটা সংরক্ষণের আগে সম্পূর্ণভাবে পার্স করুন।
হালনাগাদ
আন্দ্রেসের মন্তব্য আমাকে বুঝতে পেরেছিল যে আমি এখানে উপস্থাপন করা 'সেরা অনুশীলন' সমাধান বর্ণিত ব্যবহারের ক্ষেত্রে প্রযোজ্য নয়: সার্ভারের ইওএল (পিএইচপি) ইওএল এর সাথে ব্রাউজার (কোনও ওএস) ব্যবহার করছে না, তবে সে (ব্রাউজার) হ'ল স্ট্রিংটি কোথা থেকে আসছে।
সুতরাং দয়া করে আপনার সমস্ত ঘাঁটি কভার করতে @ অ্যালিন_পুরুকু ( তিনটি নীচে ) থেকে সমাধানটি ব্যবহার করুন (এবং তার উত্তরটিকে সমর্থন করুন):
$skuList = preg_split('/\r\n|\r|\n/', $_POST['skuList']);
সমস্ত কেস কভার। আপনার ইনপুটটি কোনও উইন্ডোজ পরিবেশ থেকে আসছে তা নির্ভর করবেন না।
$skuList = preg_split("/\\r\\n|\\r|\\n/", $_POST['skuList']);
অথবা
$skuList = preg_split('/\r\n|\r|\n/', $_POST['skuList']);
\r\n
। যে প্রতিরোধ করার জন্য, হয় ব্যবহার: preg_split('/\n|\r/', $_POST['skuList'], -1, PREG_SPLIT_NO_EMPTY);
(নোট যে \r\n
যখন যে ফ্ল্যাগ ব্যবহার অপ্রয়োজনীয় হয়ে) অথবা সহজভাবে করা \r\n
আগে\r
:preg_split('/\r\n|\n|\r/', $_POST['skuList']);
"\n\r"
(ডাবল উদ্ধৃতি) চেষ্টা করুন বা ঠিক "\n"
।
আপনার কাছে কোন প্রকারের EOL রয়েছে তা আপনি যদি নিশ্চিত না হন তবে আপনার বিস্ফোরণের আগে একটি str_replace চালান, "\ n \ r" কে "\ n" দিয়ে প্রতিস্থাপন করুন।
/n/r
? আমি জানি ওপি লিখেছিল তবে সঠিক উইন্ডোজ ইওলটি হল\r\n
PHP_EOL
।
explode("\n", str_replace("\r", '', $string));
এখানে প্রচুর জিনিস:
\r\n
, না \n\r
।\n
ছাড়া পাচ্ছেন \r
(বা এমনকি অস্বাভাবিক ক্ষেত্রেও সম্ভবত সম্ভবত \r
)শেষ পয়েন্টটি দেওয়া, আপনি খুঁজে পেতে পারেন preg_split()
সম্ভাব্য সমস্ত রূপগুলি আপনাকে ডেটা বিভক্ত করার একটি আরও নির্ভরযোগ্য উপায় প্রদান করবে explode()
। তবে বিকল্পভাবে আপনি ন্যায়বিচারের explode()
সাথে \n
ব্যবহার trim()
করতে পারেন এবং তারপরে \r
চারদিকে ঝুলন্ত রেখে যাওয়া কোনও অক্ষর মুছে ফেলতে ব্যবহার করুন ।
এই পিএইচপি ফাংশন দ্বারা স্ট্রিং বিস্ফোরিত করা সম্পর্কে newline
দৃষ্টি আকর্ষণ করছি : এ নতুন লাইন উইন্ডোজ হয় পান \ r \ N এবং লিনাক্স এবং ইউনিক্স হয় \ N
এই ফাংশন পরিবর্তনের সব নতুন লাইন Linux মোড তারপর এটি বিভক্ত।
মনোযোগ দিন যে খালি লাইন উপেক্ষা করা হবে
function splitNewLine($text) {
$code=preg_replace('/\n$/','',preg_replace('/^\n/','',preg_replace('/[\r\n]+/',"\n",$text)));
return explode("\n",$code);
}
উদাহরণ
$a="\r\n\r\n\n\n\r\rsalam\r\nman khobam\rto chi\n\rche khabar\n\r\n\n\r\r\n\nbashe baba raftam\r\n\r\n\r\n\r\n";
print_r( splitNewLine($a) );
আউটপুট
Array
(
[0] => salam
[1] => man khobam
[2] => to chi
[3] => che khabar
[4] => bashe baba raftam
)
একটি নতুন লাইনের জন্য, এটি ঠিক
$list = explode("\n", $text);
নতুন লাইন এবং ক্যারেজ রিটার্নের জন্য (উইন্ডোজ ফাইলগুলির মতো) এটি আপনার পোস্টের মতোই। আপনার স্কুললিস্টটি কোনও পাঠ্য অঞ্চল রয়েছে?
\n
ডাবল উদ্ধৃতিতে রাখুন :
explode("\n", $_POST['skuList']);
একক উদ্ধৃতিতে, যদি আমার ভুল না হয় তবে এটিকে \
এবং n
পৃথকভাবে বিবেচনা করা হবে ।
এটি যত সহজ মনে হচ্ছে
$skuList = explode('\\n', $_POST['skuList']);
আপনি শুধু যথাযথ পাঠ পাস করতে হবে "\ N" ও লেখার \ N সরাসরি একটি এস্কেপ সিকোয়েন্স হিসাবে ব্যবহার করা হচ্ছে। সুতরাং "\\" একটি সরল পশ্চাদপট স্ল্যাশ পাস করতে হবে এবং তারপরে "n" রাখুন
প্রথমত, আমি মনে করি এটি সাধারণত \r\n
, দ্বিতীয়ত, সমস্ত সিস্টেমে সেগুলি এক নয়। এটি কেবল উইন্ডোতে কাজ করবে। নতুন লাইনগুলি কীভাবে প্রতিস্থাপন করা যায় তা নির্ধারণ করার চেষ্টা করা এক ধরনের বিরক্তিকর কারণ বিভিন্ন সিস্টেমগুলি তাদের সাথে আলাদা আচরণ করে ( এখানে দেখুন )। আপনার ভাল ভাগ্য ভাল সঙ্গে থাকতে পারে \n
।
অন্য কেউ যদি এটি চেষ্টা করে কিন্তু এটি কাজ করে না, তবে এটি একটি অনুস্মারক যা আপনি সম্ভবত মস্তিষ্কের মতোই পার্ট করেছেন done
আপনি কি মাইএসকিএল আগে স্ট্রিং এড়িয়ে গেছেন? এক্ষেত্রে নিউলাইন চরিত্রটি আর নতুন লাইনের চরিত্র নয়।
আমি এটিকে পার্সিং এড়াতে কিছু করি না, কেবল '\ n' (আক্ষরিকভাবে ব্যাকস্ল্যাশ এবং এন দ্বারা প্রকৃত নিউলাইন চরিত্রের পরিবর্তে বিস্ফোরিত হয়ে বিস্ফোরিত হয়েছিলাম) ।
ইনপুট পাঠ্যবাক্সগুলি থেকে পোস্ট করা লাইন বিরতি?
আমার পক্ষে যা দ্রুত কাজ করে তা হ'ল যে কোনও পাঠ্য বা এক্সেল বা এইচটিএমএল টেবিল প্রকার বা নতুন লাইনের ধরণের ডেটা কপি করা এবং এটি ইনপুটেক্সবক্সের পরিবর্তে একটি টেক্সারিয়ায় আটকানো: এটি পোস্টে লাইন ব্রেকগুলি অক্ষত রাখে।
<textarea id="txtArea" name="txtArea" rows="40" cols="170"></textarea>
<br>
<input type="submit" value="split lines into array" />
ফর্ম গ্রহণ ফাইলটিতে:
$txtArea ='';
$txtArea = $_POST['txtArea'];
$TA = $_POST['txtArea'];
$string = $TA;
$array = preg_split ('/$\R?^/m', $string);
// or any of these:
// $array = explode(PHP_EOL,$string);
// $array = explode("\n", $txtArea);
echo "<br>A0: ".$array[0];
echo "<br>A1: ".@$array[1];
echo "<br>A2: ".@$array[2];
এই পদ্ধতিটি সর্বদা আমার পক্ষে কাজ করে:
$uniquepattern="@#$;?:~#abcz"//Any set of characters which you dont expect to be present in user input $_POST['skuList'] better use atleast 32 charecters.
$skuList=explode($uniquepattern,str_replace("\r","",str_replace("\n",$uniquepattern,$_POST['skuList'])));
PHP_EOL
ক্রস-প্ল্যাটফর্ম-সামঞ্জস্যপূর্ণ উপায়ে নিউলাইন চরিত্রটি অনুসন্ধান করার জন্য অবশ্যই ব্যবহৃত হয়, সুতরাং এটি ডস / ইউনিক্স সমস্যাগুলি পরিচালনা করে।
এটা চেষ্টা কর:
$myString = "Prepare yourself to be caught
You in the hood gettin' shot
We going throw hell of blows
got my whole frame froze";
$myArray = explode(PHP_EOL, $myString);
print_r($myArray);
আমার জন্য যা কাজ করেছে তা এখানে। পিএইচপি 5.6 এর পাশাপাশি পিএইচপি 7.0 তে পরীক্ষিত:
$skuList = str_replace("\\r\\n", "\n", $_POST['skuList']);
$skuList = str_replace("\\n\\r", "\n", $skuList);
$skuList = preg_split("/\n/", $skuList);
print_r($skuList);