Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1


Użytkownik



Witam!! Borykam sie z takim problemem odnośnie kodu php.
Otwieram plik z danymi linia po lini. Tych lini jest z 20. I teraz tak - chciałbym żeby np w każdej z tych lini dokłanie po 30 znaku wstawiał mi kropkę! Czy da sie to jakoś zrobić?? BYł bym wdzięczny za jakiekolwiek informacje.
Offline

Moderator


Mozna np. tak:
$fd = fopen("dane.txt","r");
while(!feof($fd))
{
$linia = fgets($fd,1024);
$zKropka = substr($linia,0,30).".".substr($linia,30);
echo $zKropka."<br>";
}Offline


Członek DUG
Ja mam tak:
<?php
// Otwierany plik
$plik = "dozapisu.php";
// Czy da sie zapisywac do pliku
if( is_writable( "dozapisu.php" ) )
{
// otwieram plik( do zapisu i odczytu, wlasciwie w tym miejscu mozna otworzyc tylko do odczytu )
$uchwyt = fopen($plik, 'r+');
if( $uchwyt )
{
// czytam plik do tablicy
while(!feof($uchwyt))
{
$dupa[] = fgets($uchwyt);
}
// zamykam plik i ponownie otwieram do odczytu i zapisu i zeruje go
fclose($uchwyt);
$uchwyt = fopen($plik, 'w+');
foreach( $dupa as $klucz => $wartosc)
{
// Podmieniam zawartosc
$wartosc = substr($wartosc,0,9) . "." . substr($wartosc, 9,strlen($wartosc) - 1);
fwrite($uchwyt, $wartosc);
}
fclose($uchwyt);
}
else
{
echo "Dupa, nie moge zapisac do pliku.";
}
}
?>
Offline


Użytkownik



fajnie! elegancko!:) dzięki wielkie. Ale pytanie mam jeszcze jedno gdybym drugą kropke chciał zrobić w 35 lini?? czyli 2 kropki w 30 i 35
Offline


Użytkownik



korzystałem z tego pierwszego skryptu
Offline


Członek DUG


Użytkownik



tzn :
$fd = fopen("dane.txt","r");
while(!feof($fd))
{
$linia = fgets($fd,1024);
$zKropka = substr($linia,0,30).".".substr($linia,30).substr($linia,0,35).".".substr($linia,35);
echo $zKropka."<br>";
}
niestety nieda oczekiwanego efektu
Offline


Członek DUG
substr($linia,0,30).".".substr($linia,30, 5) . "." . substr($linia,35);
Zgodnia za manualem( http://pl.php.net/manual/pl/function.substr.php )
string substr ( string $string, int $start [, int $length] )
w funkcji substr podaje się string do pocięcia, index początkowy, od którego chcemy zacząć wycinanie( pamiętając że pierwszy znak ma index 0 ) i opcjonalnie długość jaką chcemy wyciąć z tego stringa.

Offline


Użytkownik



No i poszło bez problemu!! dzieki!! tylko problem którey sie pojawił to:
mam ten skrypt:
$fd = fopen("dane.txt","r");
while(!feof($fd))
{
$linia = fgets($fd,1024);
$zKropka = substr($linia,0,30).".".substr($linia,30, 5) . "." . substr($linia,35);
echo $zKropka."<br>";
}
i jest ok wyswietla kropki tam gdzie ma wyświetlać. Ale dlaczego jak mu zmienie z ilości wyswietlamych znaków - 1024 ($linia = fgets($fd,1024);) na np 65 ponieważ chcę żeby wszystko po 65 znaku sie niewyświetlało w tych liniach - to on zamiast ucinać od tego momentu to w tej lini ucina a resztę wrzuca do następnej lini.
np:
to jest teks to jest nowy tekst test testowy teeeestt
chcę uciąć samo teeeeestt - podaje mu od którego znaku i wyswietla mi:
to jest teks to jest nowy tekst test testowy
teeeestt
zamiast całkownicie go niewyswietlać.
Offline

Moderator


debbie napisał(-a):
Ale dlaczego jak mu zmienie z ilości wyswietlamych znaków - 1024 ($linia = fgets($fd,1024);) na np 65 (...) to on zamiast ucinać od tego momentu to w tej lini ucina a resztę wrzuca do następnej lini.
Dzieje sie tak bo to 1024 to taki bufor na linie, jezeli ustawisz na 65 znakow to on i tak przejdzie po wszystkich znakach ale potraktuje normalna 1 linie jako 2 bo nie zmiesci calej w tych 65 znakach.
Jezeli chcesz wyciac wszystko powyzej 65 znaku mozesz uzyc takiego kodu:
$fd = fopen("dane.txt","r");
while(!feof($fd))
{
$liniaCala = fgets($fd,1024);
$linia = substr($liniaCala,0,65);
$zKropka = substr($linia,0,30).".".substr($linia,30, 5) . "." . substr($linia,35);
echo $zKropka."<br>";
}Offline
Strony: 1