PHP - wyświetlanie tabulatorów na początkach linii


(Drobok) #1

Chodzi mi o sposób na wyświetlenie tabulatorów na początku linii w plikach txt. Ma ktoś na to jakiś sposób ? np:

int main()

{

using namespace std;

     std::cout << "Tak powinno być" << endl;

}

int main()

{

using namespace std;

std::cout << "A tak jest" << endl;

}

Jako że brak mi wprawy w php postanowiłem zapytać tutaj ;]

Próbowałem z twardymi spacjami, ale pliki muszą być czytelne. A po stronie odczytywania z pliku samych spacji i konwersji w "locie" zbytnio mi nie idzie ;/


(Fiołek) #2

Rozwiń. To jest jakaś strona napisana w PHP(+ HTML)? Konwertuj to w locie na spacje(str_replace("\t", "    ", $tresc_pliku)) albo wyświetlaj z niezamienionymi tabulatorami w znaczniku pre.


(Drobok) #3

O właśnie o to mi chodziło, brakuje mi praktyki i potem same błędy wywala. Dzięki ;]

-- --------------------------------- --

Aj jednak nie wiem jak tego użyć. Więc rozwinę troszkę ;]

Mam 2 pliki:

http://drobok.x10.mx/inne/dp.txt << plik z zawartością a w kolejnych linijkach i z tabulatorami wyświetlanymi przez przeglądarkę gdy wejdę przez przeglądarkę

http://drobok.x10.mx/inne/odczyt.php << jednak nie wyświetla mi tych tabulatorów za pomocą skryptu php

odczyt.php

<?php

$plik = fopen("dp.txt", "r");

while (!feof($plik)) {

$bufor = fgets($plik);

str_replace("\t", "    ", $bufor);

echo "$bufor 
";

}

fclose($plik);

?>

Piątą linijkę dodałem za twoją poradą jednak nic ona nie dała :frowning:


(Fiołek) #4

str_replace nie zamienia obiektu przekazanego jako trzeci parametr tylko zwraca jego zmodyfikowaną kopie.

$bufor = str_replace("\t", "    ", $bufor);

(Drobok) #5

:smiley: Dzięki jeszcze raz, kolejny raz wydało się moje niedouczenie ;]


([alex]) #6

Hmm, ciekawe, przecież to nie zadziała poprawnie.

cout<<"\t1."endl" \t2."endl"  \t3."endl; [/code]

Powinno się wydrukować w jednej kolumnie. Chodzi mi o to że \t w pozycji 1 to 8 spacji zaś w pozycji 5 to tylko 4 spacji.

Więc trzeba znaleźć znak tabulacji policzyć ile znaków jest przed nim (uwzględniając poprzednie tabulacje) wyliczyć na ile spacji trzeba go zastąpić i dopiero zastąpić. Potem dopiero można zająć się kolejna tabulacją.