Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_match_all
Crenos
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 17.01.2009

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


Nie wiem kompletnie jak napisać wzorzec do tej funkcji. Przeczytałem kilka razy Wiki: http://en.wikipedia.org/wiki/Regular_expression bawiłem się tym narzędziem http://rubular.com/
Ale nic sensownego mi nie wychodzi.

mam taki string

Cytat
pierwszy string { drugi string|trzeci string {czwarty string|piąty string}}|szósty string {{ósmy string|dziewiąty string} dziesiąty string}{jedenasty string|dwunasty string} trzynasty string


chciałbym aby wyglądał tak

  1. (
  2. [0] => Array
  3. (
  4. [0] => pierwszy string
  5. [1] => { drugi string|trzeci string {czwarty string|piąty string}}
  6. )
  7.  
  8. [1] => Array
  9. (
  10. [0] => szósty string
  11. [1] => {{ósmy string|dziewiąty string} dziesiąty string}
  12. [2] => {jedenasty string|dwunasty string}
  13. [3] => trzynasty string
  14. )
  15.  
  16. )


To oczywiście nie jest wszystko co bym chciał zrobić z tym stringme ale jeżeli ogarnę to myślę, że dalej sobie porodzę. Tylko poprosiłbym o prosty opis dokładnie który fragment za co odpowiada.
A odnośnie wzorca to chciałbym aby tak jak w przypadku array[0] separował string, który nie zawiera się w znakach {}, separował stringi w znakach {} ale żeby ilość { była równa ilości } oraz jeżeli pojawia się | żeby tworzył kolejna tablice po tym znaku.
Mam nadzieję, że w miarę przejrzyściej opisałem.
Pytanie jest też takie czy w ogóle da się to zrobić za jednym razem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
artuross
post
Post #2





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


  1. $string = str_split('pierwszy string { drugi string|trzeci string {czwarty string|piąty string}} szósty string {{ósmy string| dziewiąty string} dziesiąty string}{jedenasty string| dwunasty string} trzynasty string', 1);
  2. $a = array();
  3.  
  4. foreach ( $string as $val )
  5. {
  6. switch ( $val )
  7. {
  8. case '{':
  9. // kod
  10. break;
  11. case '|':
  12. // kod
  13. break;
  14. case '}':
  15. // kod
  16. break;
  17. default:
  18. // kod
  19. break;
  20. }
  21. }


A jak tak sobie patrze, referencje do tablic (lub tez warstw, jak kto woli) wyzej wzgledem aktualnej mozna przechowywac w innej tablicy, gdzie ostatni element przechowuje np. $a[0][0][0], a n-1 $a[0][0].

Ten post edytował artuross 2.04.2013, 22:32:33
Go to the top of the page
+Quote Post

Posty w temacie


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: 18.09.2025 - 11:02