Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie ciągu do określonych znaków., Wyrażenia regularne
Wankster
post
Post #1





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

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


Więc tak:
Piszę sobie parser plików konfiguracyjnych (rozbudowane INI winksmiley.jpg) i natknąłem się na problem. Otóż komentarze komentarze rozpoczynają się od znaku # lub ;. Mogą też być na końcu wartości:
Kod
; To jest komentarz
; I to też :)

# To jest inny komentarz
# i to też

[Test] # Sekcja o nazwie Test :D
Nazwa = Wartość
Dwa = Druga wartość; A tu jest komentarz do tej wartości
Trzy = Chcem wyświetlić średnik: \; ale nie mogę \;(; Jak zrobić żeby usuwał tekst po; ale ignorował \;?

[DrugaSekcja]; Sekcja druga!
Tablica[] = 1
Tablica[Dwa] = 2; dwa


W sekcji Test elementu Trzy chcem wyświetlić średnik, ale średnik robi za komentarz, więc poprzedzam go znakiem \. Potrzebuje jakiegoś wyrażenia regularnego, które pobierze wszystko do pierwszego ; lub #, ale pominie \; i \#.
Tak jak jest w php $string = "quote \"s\" smile.gif";

Próbuję coś wymyśleć, ale nic nie działa tongue.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wassago
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 701
Pomógł: 0
Dołączył: 26.06.2002
Skąd: Londyn

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


nie wgrzebujac sie w twoj problem.. nie lepiej uzyc parse_ini_file()" title="Zobacz w manualu PHP" target="_manual ?


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





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

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


Nie Rkingsmiley.png
Go to the top of the page
+Quote Post
bendi
post
Post #4





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


Poczytaj i bedzie po sprawie
1 2

Druga czesc moze CI sie okazac bardzo przydatna bo opisuje jak zrobic swoj kolorator skladni, wiec komentarze jednolinijkowe tez sa opisane. Jakby co uwagi na priva


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





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

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


Dzięki, zrobiłem takie wyrażenie:
Kod
^(.*?)(?:[^\\\\](?:;|\/\/|#))
Tylko teraz jak dam taki string do sprawdzenia:
Kod
Jestem# sobie wartością \;) // Testowa wartość
To dostaje: Jeste. Zawsze, gdy napotka znak #, ; lub // ucina literkę poprzedzającą ten znak dry.gif
Go to the top of the page
+Quote Post
FiDO
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


  1. <?php
  2.  
  3. $t = array(&#092;"Trzy = Chcem wyświetlić średnik: ; ale nie mogę ;(; Jak zrobić żeby usuwał tekst po; ale ignorował ;?\",
  4. &#092;"Jestem# sobie wartością ;) // Testowa wartość\",
  5. &#092;"costam#; # komentarz\");
  6.  
  7. foreach ($t as $v) {
  8. preg_match('!(?:[;#]|[^#;])*!', $v, $m);
  9. print_r($m);
  10. }
  11.  
  12. ?>


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
bendi
post
Post #7





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


Tak bedzie chyba lepiej winksmiley.jpg
  1. <?php
  2. $t = array(&#092;"Trzy = Chcem wyświetlić średnik: ; ale nie mogę ;(; Jak zrobić żeby usuwał tekst po; ale ignorował ;?\",
  3. &#092;"Jestem# sobie wartością ;) // Testowa wartość\",
  4. &#092;"costam#; # komentarz\",
  5. &#092;"#komentarz od poczatku linii\"
  6.  );
  7.  
  8. foreach ($t as $v) {
  9. preg_match('%(?<!)[#;](.*)%', $v, $m);
  10. print_r($m);
  11. }
  12.  
  13. ?>


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Tylko, ze Twoj kod pobiera sam komentarz, a nie wszystko do niego, a tego wlasnie oczekiwal autor piszac pierwszego posta smile.gif


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
bendi
post
Post #9





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


Cytat(FiDO @ 2004-10-26 14:57:44)
Tylko, ze Twoj kod pobiera sam komentarz, a nie wszystko do niego, a tego wlasnie oczekiwal autor piszac pierwszego posta smile.gif

Bardzo mozliwe, ale zamien preg_match" title="Zobacz w manualu PHP" target="_manual na preg_replace" title="Zobacz w manualu PHP" target="_manual i zobaczysz co Ci zostanie w oryginalnym ciagu - w koncu chyba o to chodzi.

Jezeli zastosowac modyfikator /s to mozna sie pozbyc, wywolujac te regulke, wszystkich komentarzy z parsowanego pliku, no a od tego sie chyba zaczyna.


--------------------
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 - 03:57