Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match, podział po ; i przetwarzanie
Forum PHP.pl > Forum > PHP
expert
  1. $text ='ICON:wrench-screwdriver.png;VALUE:test1,test2;';
  2. preg_match('/ICON\:(.*)\;/s',$text,$icon);
  3. preg_match('/VALUE\:(.*)\;/s',$text,$value);


Mam tekst, i chce jego 'opcje' podzielić przy średniku, a następnie odpowiednie opcje porozdzielać do zmiennych..
Czyli $icon[1]='wrench-screwdriver.png' a $value[1]='test1,test2'.
Efekt jest taki, że w $icon[1] mam 'wrench-screwdriver.png;VALUE:test1,test2'. Podejrzewam, że coś będzie zamiast 's' po wzorcu, tylko co?

Szperam w necie i po woli tracę cierpliwość.
kartin
Użyj explode() zamiast wyrażeń regularnych.
by_ikar
  1. $text ='ICON:wrench-screwdriver.png;VALUE:test1,test2;';
  2.  
  3. preg_match('#ICON\:([^;]+)|VALUE\:([^;]+);#', $text, $match);
  4.  
  5. var_dump($match);


Pisane z palca więc mogą być jakieś babole.
expert
  1. $text ='ICON:wrench-screwdriver.png;VALUE:test1,test2;AAA:alalal; DDD:zsdx;';

Ogólnie składnia jest XXX:zzzz;
lukasz_os
Zrób explode po sredniku a potem w pętli po dwukropku.
by_ikar
  1. <?php
  2.  
  3. $text ='ICON:wrench-screwdriver.png;VALUE:test1,test2;AAA:alalal; DDD:zsdx;';
  4.  
  5. preg_match_all('#([^:]+):([^;]+);#', $text, $match);
  6.  
  7. $result = array_combine($match[1], $match[2]);
  8.  
  9. var_dump($match, $result);


Zamiast array_combine, można napisać swojego jakiegoś foreacha, który by likwidował puste znaki.. No ale to już jest po twojej stronie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.