Güvenilir dize itibaren satırsonlarının Kaldır

5 Cevap

String input kullanıcılar yeni bir hat üzerindeki her bir öğeyi girmek gerekiyordu textarea geliyor.

Formu işlerken, bu gibi tek öğelerin bir diziye textarea giriş patlayabilir kolaydır:

$arr = explode("\n", $textareaInput);

Bu çalışıyor ama (Windows elimden anda sadece bir test) farklı sistemlerde düzgün çalışmıyor endişe duyuyorum. Ben newlines olarak temsil edilmektedir biliyorum \ r \ n ya da sadece farklı platformlarda r \. Kod yukarıdaki hat aynı zamanda Linux, Solaris, BSD veya diğer OS altında düzgün çalışacak mı?

5 Cevap

Bir satır sonlandırıcı olarak kendi '\ r' (gerçekten değil OSX beri Unix tabanlı olan) artık kullanılabilir değil eski bir kuralıdır.

Sizin explode iyi olacak. Sadece trim, Windows kullanıcıları için, her çıkan öğesi '\ r' kapalı.

$ Dizi = preg_split ("/ [\ n \ r] + /", $ textareaInput);

Sen girişi normale olabilir:

<?php

$foo = strtr($foo, array(
    "\r\n" => "\n",
    "\r" => "\n",
    "\n" => "\n",
));

?>

Alternatif olarak, düzenli ifadeler ile patlayabilir:

<?php

$foo = preg_split ("/[\r\n]+/", $foo);

?>

Aşağıdaki kod işi yapmanız gerekir

<?php
$split = preg_split('/[\r\n]+/', $src);
foreach ($split as $k=>$string) {
    $split[$k] = trim($string);
    if (empty($split[$k]))
    unset($split[$k]);
}
ksort($split);
$join = implode('', $split);
?>

tamamen sıyrılmış newlinews ile dize alır. Bu olsa JS ile düzgün çalışmaz: (