Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_replace, tablice, zewnętrzny plik txt i błąd
Forum PHP.pl > Forum > Przedszkole
damien
Hej,

Piszę aplikację, która czyta wyrażenia regularne z pliku .txt, zapisuje do tablicy, a następnie przypasowuje wyrażenia z tej tablicy do innej tablicy, by usunąć z niej te pasujące.
Plik .txt wygląda tak:
Kod
(.*).opole.pl (.*).wroc.pl


A oto kod skryptu:
  1. <?php
  2. //////////////////////// odczytanie wyrażeń z pliku
  3.  
  4. $plik = fopen("d.txt", "r");
  5. if ($plik ===false) {
  6. echo "Nie znaleziono pliku";
  7. } else {
  8. while (!feof($plik)) {
  9. $bufor = fgets($plik);
  10. echo "$bufor";
  11. }
  12. fclose($plik);
  13. }
  14. $tablicaPlik = explode(" ", $bufor);
  15. echo "<pre>";
  16. print_r($tablicaPlik);
  17. echo "</pre>";
  18.  
  19. /////////////////////////////// odczytanie listy domen ze schowka
  20.  
  21. $schowek = "narty.waw.pl narty.wroc.pl narty.bytom.pl narty.opole.pl";
  22.  
  23. $tablicaSchowek = explode(" ", $schowek);
  24.  
  25. echo "<pre>Lista domen przeniesiona ze schowka:\n";
  26. print_r($tablicaSchowek);
  27. echo "</pre>";
  28.  
  29. ////////////////////////////// Odnalezienie w $tablicaSchowek domen, które pasują do wzorców z $tablicaPlik i ich usunięcie
  30.  
  31. $tablicaSchowek = preg_replace($tablicaPlik, '', $tablicaSchowek);
  32. echo "<pre>";
  33. print_r($tablicaSchowek);
  34. echo "</pre>";
  35. ?>


Otrzymuję błąd "Warning: preg_replace() [function.preg-replace]: Unknown modifier '.' " w linii, gdzie jest preg_replace.
Czy potrafiłby mi ktoś pomóc?
webdice
  1. $arr = array(
  2. '#a#', '#b#'
  3. );
  4.  
  5. print preg_replace( $arr, '', 'abc' );
damien
Cześć, a dałbyś radę opowiedzieć to jakoś bardziej łopatologicznie? Uczę się PHP dopiero od wczoraj...
webdice
  1. mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )


Ta funkcja jako pierwszy argument przyjmuje wzorzec, który musi mieć tzw. delimitery. Przykładowo, chcesz usunąć z tekstu wszystkie małe litery, możesz zrobić to tak:

  1. preg_replace( '#[a-z]#', '', 'Sample text' );


lub

  1. preg_replace( '$[a-z]$', '', 'Sample text' );


itp... Tak samo w tablicy, każda wartość musi posiadać w/w delimitery. Przeczytaj sobie pierwszy lepszy kurs o wyrażeniach regularnych.

damien
Dziękuję za wyjaśnienia, ale niestety to mi nie działa.
Kiedy dodam do pliku tekstowego, do początku i do końca każdego wersu znaczek # (bo teraz odczytuję ten plik przez file() ), żeby wyglądało to tak:
Kod
#(.*).opole.pl#
#(.*).wroc.pl#

też wywala błąd, tym razem "Warning: preg_replace() [function.preg-replace]: Unknown modifier ' ' ".

Kiedy zrobię coś takiego (próbuję na różne sposoby):
  1. $tablicaWynikowa = preg_replace("#".$tablicaPlik."#", '', $tablicaSchowek);

Nie wyświetla się błąd, ale funkcja preg_replace nie działa, bo "print_r($tablicaWynikowa);" wyświetla wszystkie elementy z tablicy $tablicaSchowek.
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.