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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-11-06 16:17:29

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

wstawianie znaku w danym polu + php

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.


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#2  2007-11-06 16:37:35

  raixer - Moderator

raixer
Moderator
Zarejestrowany: 2004-08-21

Re: wstawianie znaku w danym polu + php

Mozna np. tak:

Kod:

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

Open Source - Świat otwartych umysłów
Linux Registered User: #276548

Offline

 

#3  2007-11-06 17:03:19

  chyl-o - Członek DUG

chyl-o
Członek DUG
Skąd: Lublin
Zarejestrowany: 2006-04-04
Serwis

Re: wstawianie znaku w danym polu + php

Ja mam tak:

Kod:

<?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.";
        }
    }
?>

Registered Linux User: #417111
http://chyl.org/pub/images/dug_button.png

Offline

 

#4  2007-11-06 17:07:55

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: wstawianie znaku w danym polu + php

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


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#5  2007-11-06 17:08:42

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: wstawianie znaku w danym polu + php

korzystałem z tego pierwszego skryptu


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#6  2007-11-06 17:11:32

  chyl-o - Członek DUG

chyl-o
Członek DUG
Skąd: Lublin
Zarejestrowany: 2006-04-04
Serwis

Re: wstawianie znaku w danym polu + php

To funkcją substr wycinasz odpowiedni kawałek i dalej wstawiasz kropke i resztę stringa.


Registered Linux User: #417111
http://chyl.org/pub/images/dug_button.png

Offline

 

#7  2007-11-06 17:34:21

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: wstawianie znaku w danym polu + php

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


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#8  2007-11-06 17:40:15

  chyl-o - Członek DUG

chyl-o
Członek DUG
Skąd: Lublin
Zarejestrowany: 2006-04-04
Serwis

Re: wstawianie znaku w danym polu + php

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.


Registered Linux User: #417111
http://chyl.org/pub/images/dug_button.png

Offline

 

#9  2007-11-07 13:59:00

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: wstawianie znaku w danym polu + php

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ć.


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#10  2007-11-13 15:45:00

  raixer - Moderator

raixer
Moderator
Zarejestrowany: 2004-08-21

Re: wstawianie znaku w danym polu + php

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:

Kod:

$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>";
}

Open Source - Świat otwartych umysłów
Linux Registered User: #276548

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)