Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][TXT] Czytanie z pliku
Forum PHP.pl > Forum > Przedszkole
Puszkin4717
Mam taki skrypt i wszystko spoko działa ale chce zamienić żeby zamiast czytał z nawiasów ('/mama/', '/tata/') żeby to czytał z pliku txt mam następujące pytanie co ma być w tym pliku txt oraz jak zmienić ten skrypt.

  1. <?php
  2. $text = ( $_POST['fname'] ) ;
  3. $patterns = array('/mama/', '/tata/');
  4. $replacements = array('<span class="unseen klasa0">{<span>mama</span>, <span class="x0">mamusia</span>, <span class="x0">mamka</span>}</span>', '<span class="unseen klasa0">{<span>tata</span>, <span class="x0">tatuś</span></span>}');
  5.  
  6. echo preg_replace ($patterns, $replacements, $text);
  7. ?>
  8.  
hondek
Hmm...
Plik przydało by się spreparoać tak, żeby kolejne patterny były oddzielone jakims separatorem, np ',' :
/mama/,/tata/

a co to skryptu to : fopen(), fread(), fclose(), explode().
Puszkin4717
a jak ten plik separować ? i nie wiem jak to wstawić bo pierwszy raz potrzebuje użyć tego żeby czytać coś z pliku.
hondek
napisałem ci wszystkie funkcje jakie są ci potrzebne, manuala masz na http://php.net
Puszkin4717
a możesz dać jakiś przykład.
mmica
Hey ;]
Po co ta niskopoziomowa zabawa z fopen() itd.. Myślałem, że lata fascynacji C minęły.

Plik patterns.txt:
Kod
/mama/,/tata/

Skrypt PHP:
  1. <?php
  2. $text = ($_POST['fname']);
  3.  
  4. $dane_z_pliku = file_get_contents('./patterns.txt');
  5. $patterns = explode(',', $dane_z_pliku);
  6.  
  7. $replacements = array('<span class="unseen klasa0">{<span>mama</span>, <span class="x0">mamusia</span>, <span class="x0">mamka</span>}</span>', '<span class="unseen klasa0">{<span>tata</span>, <span class="x0">tatuś</span></span>}');
  8.  
  9. echo preg_replace ($patterns, $replacements, $text);
  10. ?>

Pozdrawiam,
mmica
Puszkin4717
Nadal problem

Warning: Wrong parameter count for preg_replace() in /home/zwierz/public_html/gt1.php on line 12
mmica
Hey ;]
W jaki sposób zmieniłeś mój kod? Ostrzeżenie wskazuje na linie 12., a takiej w moim kodzie nie ma winksmiley.jpg
U mnie taki kod spełnia zadanie:
  1. <?php
  2. $text = ($_GET['fname']);
  3.  
  4. $dane_z_pliku = file_get_contents('./patterns.txt');
  5. $patterns = explode(',', $dane_z_pliku);
  6.  
  7. $replacements = array('<span class="unseen klasa0">{<span>mama</span>, <span class="x0">mamusia</span>, <span class="x0">mamka</span>}</span>', '<span class="unseen klasa0">{<span>tata</span>, <span class="x0">tatuś</span></span>}');
  8.  
  9. echo preg_replace ($patterns, $replacements, $text);
  10. ?>
Odwołanie:
Kod
http://host/preg.php?fname=tata%20ma,%20a%20mama%20nie

A na wyjściu:
Kod
{tata, tatus} ma, a {mama, mamusia, mamka} nie


Pozdrawiam,
mmica
Babcia@Stefa
Cytat(hondek @ 4.12.2010, 22:26:06 ) *
Hmm...
Plik przydało by się spreparoać tak, żeby kolejne patterny były oddzielone jakims separatorem, np ',' :
/mama/,/tata/

a co to skryptu to : fopen(), fread(), fclose(), explode().


file_get_contents() najprościej.

-- WebNuLL
Puszkin4717
zobacz http://hosting.jkns.pl/~zwierz/gt3.php

a błąd wyrzuca na tą linijkę

  1. echo preg_replace ($patterns, $replacements, $text);
Cysiaczek
Zadałeś sobie trud przeczytania co to za błąd? Wpisz w google, to zobaczysz.
mmica
Hey ;]
  1. Warning: preg_replace() [function.preg-replace]: No ending delimiter '�' found in /home/zwierz/public_html/gt1.php on line 17

Tu chodzi o brak ogranicznika dla preg_replace(), tzn. w pliku patterns.txt miałeś:
Kod
/mama/,/tata/

Znak ' / ' jest właśnie tym ogranicznikiem i zdaje mi się, że gdzieś Ci go zabrakło. Jeżeli możesz, wklej cały kod - będzie łatwiej.

Pozdrawiam,
mmica
Puszkin4717
Plik TXT
  1. /mama/,/tata/



q1.php
  1. <?php
  2.  
  3. $text = ($_GET['fname']);
  4.  
  5.  
  6.  
  7. $dane_z_pliku = file_get_contents('./patterns.txt');
  8.  
  9. $patterns = explode(',', $dane_z_pliku);
  10.  
  11.  
  12.  
  13. $replacements = array('<span class="unseen klasa0">{<span>mama</span>, <span class="x0">mamusia</span>, <span class="x0">mamka</span>}</span>', '<span class="unseen klasa0">{<span>tata</span>, <span class="x0">tatuś</span></span>}');
  14.  
  15.  
  16.  
  17. echo preg_replace ($patterns, $replacements, $text);
  18.  
  19. ?>
mmica
Hey ;]
Błąd masz w linii 3.:
  1. $text = ($_GET['fname']);
Korzystasz z GET'a, a w formularzu masz POST. Zamień na:
  1. $text = ($_POST['fname']);

Pozdrawiam,
mmica
Puszkin4717
Nadal błąd wywala
mmica
Hey ;]
O rany.. http://my-pastebin.ugu.pl/helpdesk/preg.php - tu masz przykład, który działa. Pod przykładem wypisałem Ci kod na jakim to pracuje. Przekopiuj i sprawdź czy to działa.

Pozdrawiam,
mmica
Puszkin4717
Znalazłem błąd dzięki smile.gif
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.