Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]preg_match i pętle
MagicianVH
post 4.02.2013, 11:59:48
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 31.08.2010

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


Witajcie, mam taki ciąg:

(key1 700) (key2 6) (key3 2) (key4 269 330) (key5 300) (key6 76)

Wartości key to stringi, nie zawsze w takiej samej kolejności.

Chciałbym za pomocą regexpa przerobić to na zmienne, ale nie wiem jak przejechać przez ten ciąg kilka razy.
Myślałem nad pętlą, która za każdym razem usuwałaby pierwszy znaleziony wynik i takim sposobem przejechałbym cały, ale czy jest może jakieś lepsze rozwiązanie?

Mój regexp:
preg_match("/\s*\((.*)\s*(.*)\)\s*/i", $line, $match);
Go to the top of the page
+Quote Post
Crozin
post 4.02.2013, 12:12:34
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


preg_match_all
Go to the top of the page
+Quote Post
Sephirus
post 4.02.2013, 12:20:15
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. $ciag = '(key1 700) (key2 6) (key3 2) (key4 269 330) (key5 300) (key6 76) ';
  2. preg_match_all('#\(([a-z0-9]+)\s*([^\))]+)\)#si',$ciag,$matches);
  3. $zmienne = array();
  4. foreach($matches[1] AS $index => $value)
  5. $zmienne[$value] = $matches[2][$index];
  6.  
  7. var_dump($zmienne);


Kod
array
  'key1' => string '700' (length=3)
  'key2' => string '6' (length=1)
  'key3' => string '2' (length=1)
  'key4' => string '269 330' (length=7)
  'key5' => string '300' (length=3)
  'key6' => string '76' (length=2)


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
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 Wersja Lo-Fi Aktualny czas: 6.07.2025 - 17:12