Dizi dize koymak nasıl, yeni hat ile bölünmüş?

12 Cevap php

Benim veritabanında line breaks ile, string vardır.

Ben bir array o string koymak istiyorum, ve her için new line, {[(1)] 'de index place birini atlamak }.

string ise:

"Benim text1 (burada bir satır mola) Benim text3 Benim text2 (burada bir satır sonu olduğunu)"

İstediğim sonuç şudur:

array[0] = "My text1"

array[1] = "My text2"

array[2] = "My text3

12 Cevap

: Sen explode function, using "\n "ayırıcı olarak kullanabilirsiniz

$your_array = explode("\n", $your_string_from_db);

Örneğin, bu kod parçası varsa:

$str = "My text1\nMy text2\nMy text3";
$arr = explode("\n", $str);
var_dump($arr);

Bu çıktıyı almak istiyorum:

array
  0 => string 'My text1' (length=8)
  1 => string 'My text2' (length=8)
  2 => string 'My text3' (length=8)


Note that you have to use a double-quoted string, so \n is actually interpreted as a line-break.
(see that manual page for more details)

Bir satır sonu farklı platformlar, \ r \ n \ r veya \ n üzerinde farklı tanımlanır.

Eğer \ R ile her üç maç dize bölmek RegExp kullanma

Sorunun Yani:

$array = preg_split ('/$\R?^/m', $string);

Yani Windows, Mac ve Linux üzerinde satır sonlarını maç olur!

Ben her zaman büyük bir başarı ile bu kullandım:

$array = preg_split("/\r\n|\n|\r/", $string);

(Nihai \ r ile Lobsterman @ sayesinde güncellenir)

PHP zaten mevcut sistemin satır karakter (ler) bilir. Sadece EOL sabitini kullanın.

explode(PHP_EOL,$string)

David: Büyük yön, ancak \ r kaçırdı. Bu benim için çalıştı:

$array = preg_split("/(\r\n|\n|\r)/", $string);
explode("\n", $str);

"(Yerine 'içinde), aksi takdirde oldukça önemli olduğunu, satır sonu yorumlanır olsun wouln't.

<anti-answer>

Diğer yanıtlar belirtildiği gibi, PHP 5.3.0 'dan itibaren split önerilmiyor çünkü split kullanmak explode yerine emin olun. yani aşağıdaki bunu yapmak istiyorum NOT yoludur:

$your_array = split(chr(10), $your_string);

LF = "\n" = chr(10), CR = "\r" = chr(13)

</anti-answer>

Herkes bir crontab cronjobs görüntülemek için çalışıyor ve her satırı ayrı nasıl sinirli almak için patlayabilir kullanın:

$output = shell_exec('crontab -l');
$cron_array = explode(chr(10),$output);

'\ n' kullanarak çalışmak gibi görünüyor ama chr (10) güzel çalışıyor değil: D

Bu bazı tek bazı baş ağrısı kaydeder umuyoruz.

Sen kullanmanız gerekir PHP_EOL: sembolü doğru 'Satır sonu' için geçerli platform.

explode(PHP_EOL, $string);

Bu kullanabilirsiniz:

 \str_getcsv($str,PHP_EOL);

Bu yöntem her zaman benim için çalışıyor:

$uniquepattern="gd$#%@&~#"//Any set of characters which you dont expect to be present in user input $_POST['text'] better use atleast 32 charecters.
$textarray=explode($uniquepattern,str_replace("\r","",str_replace("\n",$uniquepattern,$_POST['text'])));
 $a="12321325,123642026,123672126,123872841";

Burada $a benim dizesinde bir dizedir , delimeter olduğunu

$pieces = explode(",", $a);



 foreach($pieces as $v){

         echo $v."<br />";
}

çıktı

  12321325
  123642026
  123672126
  123872841