Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][regex] Odpowiednik 'lub' w regex
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://www.google.pl/#hl=pl&q=wyra%C5%...08dbeef14aa897e ...


--------------------
Go to the top of the page
+Quote Post
Wolfie
post
Post #3





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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

Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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);


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





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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

Ten post edytował Wolfie 17.08.2009, 11:55:52
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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


--------------------
Go to the top of the page
+Quote Post
Wolfie
post
Post #7





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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

Ten post edytował Wolfie 17.08.2009, 12:07:04
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Ta funkcja powie ci ile backslashy potrzebujesz przed znakiem http://pl.php.net/preg_quote


--------------------
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: 20.08.2025 - 07:28