Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][regex] Odpowiednik 'lub' w regex
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam,

Npisalem taka funkcje :

  1. function tokenizeFile() {
  2. $tokenTable = preg_split('/(\s+)/', $this->getFile());
  3. foreach($tokenTable as $token) {
  4. $array = preg_replace('|[\.][-]|', '', $token);
  5. $temp[] = $array;
  6. }
  7. print_r($temp);
  8. }


Przeszukuje ona plik tekstowy w poszukiwaniu spacji a nastepnie wrzuca wszystkie znalezione slowa do osobnych komorek w tabeli.
Pozniej ze wszystkich wyrazow znajdujacych sie w tabeli chce usunac takie znaki jak ',' (przecinek) '.' (kropka) '-' (myslinik) itp itd.

Jak widac dzieje sie to w tej linijce :

  1. $array = preg_replace('|[\.][-]|', '', $token);


Tylko teraz nie wiem jak w wyrazeniach regularnych dziala konstrukcja 'lub'. Tzn ze jak napotka kropke lub przecinek lub myslnij to ma go poprostu zlikwidowac z danej komorki tabeli......probowalem oddzielac znaki nawiasami okraglymi, kwadratowymi jak to widac wyzej ale nic nie dziala.

Jak zastosuje takie cos :
  1. $array = preg_replace('|\.|', '', $token);


To elegancko wywala kropke ale juz bardziej zlozone wyrazenie jest dla mnei zagadka.....
Wolfie
Juz probowalem cos takiego :

  1. $array = preg_replace('|\.|-|', '', $token);


Rowniez z nawiasami kwadratowymi i okraglymi, ale wywala caly czas ten sam blad :

Cytat
Warning: preg_replace() [function.preg-replace]: Unknown modifier '-' in C:\Apache\htdocs\PrackaMgr\class.Filter.php on line 18

wookieb
No ale co ty robisz?
questionmark.gif (albo) . albo - albo questionmark.gif wiec nie dziw sie ze sypie bledami.
Miałes u górze przykład stworzenia wyrażenia
  1. pref_replace('/\.|-/', '', $token);
Wolfie
Zmylilo mnie cos kto napisal w innym poscie i myslalem ze znakiem '|' otwiera sie i zamyka wyrazenie, tak przynajmniej wynikala z tamtego postu.....

A jeszcze jedno pytanko :

jak mam to wyrazenie :

  1. $array = preg_replace('/\.|-|,|\(|\)|"|/', '', $token);


To jak mam tutaj wstawic jeszcze zeby bral pod uwage pojedynczy cudzyslow ? No bo podwojny cudzyslow normalnie bierze pod uwage ze wzgeldu na to ze zapytanie jest w pojedynczym....a jak to zrobic w pojedynczym cudzyslowem tzw apostrofem winksmiley.jpg

----------------------------------------------

Ok, niewzne to byl banal.....sorry smile.gif
wookieb
  1. preg_replace('/\.|-|,|\(|\)|"|\\\'/', '', $token);
Wolfie
A dlaczego tu sa 3 backslashe? mi sie to udalo zrobic za pomoca jednego :

  1. $array = preg_replace('/\.|-|,|\(|\)|"|\'/', '', $token);


ale teraz mam jeszcze problem jak usunac z tekstu '/' i '\'.......

probowalem tak :

  1. $array = preg_replace('/\.|-|,|\(|\)|"|\/|\|\'/', '', $token);


Ale zadnej reakcji i slash i backslash normalnie pozostaja w stringu.....a do tego znowu pojawia sie apostrof ....

-------------------------------------------------------

Ok zrobilem to tak :

  1. $array = preg_replace('/\.|-|,|\(|\)|"|\/|\\\|\'/', '', $token);


Ale nie wiem dlaczego trzeba uzyc 2x '\' przed backslashem....czy ewentyalnie apostrofem.....
wookieb
Ta funkcja powie ci ile backslashy potrzebujesz przed znakiem http://pl.php.net/preg_quote
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.