Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne. dzielenie stringa na wyrazy, frazy
Forum PHP.pl > Forum > PHP
robis
Jakos nigdy nie bylem dobry z wyrazen regularnych i mam taki o to problem:

Chce zeby taki ciag:

Cytat
costam1 "costam2 costam2" costam3 "costam4 costam4"


zostal przemioniony na tablice z

Kod
[0] => 'costam1',
[1] => 'costam2 costam2',
[2] => 'costam3',
[3] => 'costam4 costam4'


Jak takie cos wykonac?
Vertical
  1. <?php
  2. $string = "costam1 "costam2 costam2" costam3 "costam4 costam4""; // mogą być jeszcze inne cudzysłowy itp.
  3. $arr = explode(""", $string);
  4. if( substr($string, -1, 1) == """ ) unset($arr[count($arr)-1]); // sprawdzanie, czy na końcu stringa jest cudzysłów
  5.  
  6. for($i = 0; $i <= (count($arr)-1); $i++ ) { // usuwanie spacji
  7. if( $arr[$i]{0} == ' ' ) $arr[$i] = substr($arr[$i], 1);
  8. if( $arr[$i]{strlen($arr[$i])-1} == ' ' ) $arr[$i] = substr($arr[$i], 0, strlen($arr[$i])-1);
  9. }
  10. return $arr;
  11. ?>
bendi
a moze tak
  1. <? preg_split( '/ ?" ?/', $s ); ?>
robis
Heh juz prawie ale troche zle napisalem

moj ciag:
Cytat
costam1 "costam2 costam2" costam3 costam4 costam5 "costam6 costam6"


chce zeby zwrocilo:
Kod
[0] => 'costam1',
[1] => 'costam2 costam2',
[2] => 'costam3',
[3] => 'costam4',
[4] => 'costam5',
[3] => 'costam6 costam6'


EDIT
Heh cos wyszlo z moich przemyslen i wyszlo mi cusik takiego (trza usunac ukosniki sprzed cudzyslowow :]) :

  1. <?php
  2. $string = 'costam1 " costam2 costam2 f " costam3 gowno costam "costam dsdas" adfadf "costam4 costam5"';
  3.  
  4. $tab=explode(' ', $string);
  5. $ile= count($tab);
  6.  
  7. for($i=0; $i<$ile; ++$i) {
  8.  
  9. if(substr($tab[$i], 0, 1)=='"') {
  10.  
  11.  
  12. $str=$tab[$i];
  13.  
  14. for($i=0; $i<$ile; ++$i) {
  15.  
  16. if(substr($tab[$i], 0, 1)=='"') {
  17.  
  18.  
  19. $str=substr($tab[$i], 1);
  20.  
  21. for($a=$i+1; $a<$ile; ++$a) {
  22. $i=$a;
  23. if(substr($tab[$a], -1, 1)=='"') {
  24. $str.=' '.substr($tab[$a], 0, -1);
  25. $a=$ile;
  26. }
  27. else $str.=' '.$tab[$a];
  28.  
  29.  
  30. }
  31.  
  32. $wyniki[]=$str;
  33.  
  34. }
  35. else $wyniki[]=$tab[$i];
  36.  
  37. }
  38. ?>


Dziala tak jak chcialem :] Jednak jezeli ktos ma jakies inne propozycje to bardzo prosze wklejac tongue.gif
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.