Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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 (IMG:http://forum.php.pl/style_emoticons/default/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\" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ";

Próbuję coś wymyśleć, ale nic nie działa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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 (IMG:http://forum.php.pl/style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 23:59