Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP i znacznik linuxa
Forum PHP.pl > Forum > PHP
Michcio_
Witam,
Mam problem poniewaz mam skrypt do edytowania pliku . I chciałbym żeby na końcu każdej linijki dawało taki kwadracik linuxa (czyli nowa linijka , linuxa) bo chcę żeby było przystosowane do linuxa. Dałem takie coś:
$dane = str_replace("\n","tutajtenkwadrat\n", $dane);
I daje na koncu linijki po 3 kwadraty , co zrobic zeby jeden kwadrat był?
O to cały skrypt:
Kod
<meta name="test - blabla" http-equiv="content-type" content="text/html; charset=utf-8"/>
<?php
$pole1 = trim($_POST['pole1']);
$pole2 = trim($_POST['pole2']);

if(empty($pole1) and empty($pole2)) {
    
// prosty formularz zawierający dwa pola
$fd = fopen("test/config.ini", "r");
$czytaj_ini = fread($fd, filesize("test/config.ini"));
echo "<form action=\"\" method=\"post\">
<textarea name=\"pole2\" style=\"width: 500px; height: 500px;\">$czytaj_ini
</textarea><br />
<input type=\"submit\" value=\"Zapisz\" />
</form>";
}
else {
    
    // dane pochodzące z formularza
    $dane = $pole1."".$pole2."";
    $dane = str_replace("\n","
\n", $dane);

    // przypisanie zmniennej $file nazwy pliku
    $file = "test/config.ini";
    // uchwyt pliku, otwarcie do dopisania
    $fp = fopen($file, "w");
    // blokada pliku do zapisu
    flock($fp, 2);
    // zapisanie danych do pliku
    fwrite($fp, $dane);
    // odblokowanie pliku
    flock($fp, 3);
    // zamknięcie pliku
    fclose($fp);
  
    echo "Dane zostały zapisane!<br />";
    echo "<a href=\"panel.php?id=zobacz_mape\">Zobacz config</a>";
}


?>
pest
Możesz chociaż wyjaśnić o co ci tak na prawdę chodzi, bo stwierdzenie, że chcesz mieć kwadracik na końcu każdej linii jakoś mnie nie przekonuje.

"Enter" w windows składa się z 2 znaków: chr(13).chr(10) (co odpowiada również opisie "\r\n"), natomiast "enter" w linux składa się z 1 znaku chr(10) (co odpowiada właśnie znakowi "\n").

Kiedy windows napotyka sam znak \n, to wyświetla kwadracik, bez przejścia do nowej linii (w notatniku, wordpad automatycznie zamienia \n na \r\n).

Dodatkowo wiele funkcji w PHP wstawia znaczki końca linii zależnie od systemu w którym pracuje PHP.
Michcio_
No bo mam config do gry i chce żeby go edytować na stronie , ale na stronie nie przystosowywuje do linuxa. Chce żeby na końcu lini był enter tak jak w linuxie jest , np. wezme w kompie edytorem linuxa i jak potem notatnikiem wezme to taki kwadracik jest. Chce żeby w tym polu:
$dane = str_replace("\n","TUTAJ", $dane); był enter w systemie linux
Zbychu666
Cytat(Michcio_ @ 30.07.2008, 11:40:18 ) *
$dane = str_replace("\n","TUTAJ", $dane); był enter w systemie linux


To JEST znak nowej linii jak w linux. Jeśli masz plik z windowsowymi znakami nowej linii, to rób na nim:


  1. <?php
  2. $dane = str_replace("r","", $dane);
  3. ?>
pest
Konwersja entera linuksowego na windoswowy
  1. <?php
  2. str_replace("\n", "r\n", $string);
  3. ?>

Konwersja odwrotna
  1. <?php
  2. str_replace("\n", "r\n", $string);
  3. ?>
Xniver
Przecież te powyższe kody są te same(albo mi się wydaje).

Prawidłowa konwersja z M$ Windows:
  1. <?php
  2. $string = str_replace("r", '', $string);
  3. ?>
Michcio_
Ok, naprawiłem dałem:
$dane = $pole2;
$dane = str_replace("\r\n",tutaj ten kwadrat", $dane);
Dzieki za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.