सरल, सही? खैर, यह काम नहीं कर रहा है: - \
$skuList = explode('\n\r', $_POST['skuList']);
\r\nअन्य तरीके से नहीं हैं ।
सरल, सही? खैर, यह काम नहीं कर रहा है: - \
$skuList = explode('\n\r', $_POST['skuList']);
\r\nअन्य तरीके से नहीं हैं ।
जवाबों:
सर्वश्रेष्ठ प्रणालियां
जैसा कि पहले उत्तर के लिए टिप्पणी में उल्लेख किया गया है, सबसे अच्छा अभ्यास PHP निरंतर PHP_EOL का उपयोग करना है जो वर्तमान प्रणाली के ईओएल ( लाइन का अंत ) का प्रतिनिधित्व करता है ।
$skuList = explode(PHP_EOL, $_POST['skuList']);
PHP बहुत सारे अन्य उपयोगी स्थिरांक प्रदान करता है जिनका उपयोग आप अपने कोड सिस्टम को स्वतंत्र बनाने के लिए कर सकते हैं, उपयोगी और सिस्टम स्वतंत्र निर्देशिका के आवेदकों को खोजने के लिए इस लिंक को देखें ।
चेतावनी
ये स्थिरांक आपके पेज सिस्टम को स्वतंत्र बनाते हैं, लेकिन जब आप किसी अन्य सिस्टम पर संग्रहीत डेटा के साथ स्थिरांक का उपयोग करते हैं तो आप एक सिस्टम से दूसरे सिस्टम में जाने पर समस्याओं में भाग सकते हैं। नई प्रणाली की स्थिरांक पिछली प्रणाली से अलग हो सकती है और संग्रहीत डेटा अब काम नहीं कर सकता है। इसलिए किसी भी सिस्टम निर्भर भागों को हटाने के लिए इसे संग्रहीत करने से पहले अपने डेटा को पूरी तरह से पार्स करें।
अपडेट करें
एंड्रियास की टिप्पणी ने मुझे एहसास दिलाया कि मेरे द्वारा प्रस्तुत 'बेस्ट प्रैक्टिस' समाधान वर्णित उपयोग-मामले पर लागू नहीं होता है: सर्वर के ईओएल (पीएचपी) का ईओएल ब्राउज़र (किसी भी ओएस) का उपयोग करने से कोई लेना-देना नहीं है, लेकिन वह (ब्राउज़र) वह जगह है जहाँ से स्ट्रिंग आ रही है।
तो कृपया अपने सभी ठिकानों को कवर करने के लिए @Alin_Purcaru ( तीन डाउन ) से समाधान का उपयोग करें (और आपके उत्तर को देखें):
$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" के साथ "\ 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वर्ण को हटाने के लिए उपयोग कर सकते हैं जो चारों ओर लटका हुआ है।
इस php समारोह से स्ट्रिंग विस्फोट न्यू लाइन
ध्यान दें : में नई लाइन विंडोज है \ 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);
एक नई लाइन और कैरिज रिटर्न (विंडोज फाइलों में) के लिए, यह आपके द्वारा पोस्ट किए गए अनुसार है। क्या आपका स्कालिस्ट एक पाठ क्षेत्र है?
जितना आसान लगता है
$skuList = explode('\\n', $_POST['skuList']);
आपको बस सटीक पाठ "\ n" पास करने की आवश्यकता है और लेखन \ n सीधे एक एस्केप अनुक्रम के रूप में उपयोग किया जा रहा है। तो "\\" एक साधारण पिछड़े स्लैश को पारित करने के लिए और फिर "एन" डाल दिया
सबसे पहले, मुझे लगता है कि यह आमतौर पर है \r\n, दूसरे में, उन सभी प्रणालियों पर समान नहीं हैं। यह केवल खिड़कियों पर काम करेगा। यह एक तरह से कष्टप्रद है कि यह पता लगाने की कोशिश की जाए कि नई लाइनों को कैसे बदला जाए क्योंकि विभिन्न प्रणालियां उनके साथ अलग तरह से व्यवहार करती हैं ( यहां देखें )। आप बस के साथ बेहतर भाग्य हो सकता है \n।
अगर किसी और ने यह कोशिश की, लेकिन यह काम नहीं कर रहा था, तो यह एक अनुस्मारक है कि आपने शायद मैं ब्रेन फ़ार्ट को I के रूप में किया हो।
क्या आप mysql पहले स्ट्रिंग से बच गए? इस मामले में न्यूलाइन कैरेक्टर अब न्यूलाइन कैरेक्टर नहीं है।
मैंने इसे पार्स करने से बचने के लिए कुछ भी नहीं किया, बस '\ n' द्वारा अनुकूलित और विस्फोट किया गया (शाब्दिक रूप से बैकस्लैश और एन वास्तविक न्यूलाइन वर्ण के बजाय।
इनपुट टेक्स्टबॉक्स से पोस्टिंग से हारने वाली लाइन टूट जाती है?
मेरे लिए तेजी से काम करना किसी भी पाठ या एक्सेल या एचटीएमएल टेबल प्रकार या डेटा के न्यूलाइन प्रकार को कॉपी करना और एक इनपेक्टेक्सबॉक्स के बजाय एक टेक्स्टारिया में पेस्ट करना है: इससे पोस्टबार्ट्स POST में बरकरार रहता है।
<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);
यहाँ मेरे लिए क्या काम किया है। PHP 5.6 और PHP 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);