Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_replace, tablice, zewnętrzny plik txt i błąd, Unknown modifier '.'
damien
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 21.09.2011

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. $arr = array(
  2. '#a#', '#b#'
  3. );
  4.  
  5. print preg_replace( $arr, '', 'abc' );
Go to the top of the page
+Quote Post
damien
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 21.09.2011

Ostrzeżenie: (0%)
-----


Cześć, a dałbyś radę opowiedzieć to jakoś bardziej łopatologicznie? Uczę się PHP dopiero od wczoraj...

Ten post edytował damien 4.10.2011, 14:15:56
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  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.

Go to the top of the page
+Quote Post
damien
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 21.09.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 05:12