[ krvopije @ 28.08.2002. 22:42 ] @
Ovako majstori imam problem pa mi je potrebna pomoc.
Dakle imam jedan string:

'a+b-c+d-e'

i treba ga razbiti izmedju znakova '+' i '-' ali tako da se svaki element izdvoji sa znakom koji mu prethodi uz to naravno prvi da se izdvoji bez ikakvog znaka. Da budem malo jasniji rezultat problema trebalo bi da bude u obliku matrice:

A[0]='a'
A[1]='+b'
A[2]='-c'
A[3]='+d'
A[4]='-e'

Dakle ako neko zna neka napise resenje.
Unaprijed hvala!!!
[ Dejan Topalovic @ 29.08.2002. 11:12 ] @
Code:

<?php
$str = "a+b-c+d-e";
$A[] = substr($str,0,1); 

for($i = 1; $i < strlen($str); $i += 2) {
        $A[] = substr($str,$i,2);     
}
?>
[ dukenukem @ 29.08.2002. 11:14 ] @
probaj preko regexp-a, npr:
Code:

a = preg_match_all("/([\+-]?[a-z])/");

nisam bas najsigruniji sto se tice sintakse, ali regexp je ok. proveri po dokumentaciji.
[ krvopije @ 29.08.2002. 13:59 ] @
Oba resenja rade ali postoji drugi problem(zato sto nisam dobro postavio zadatak).
Dakle clanovi stringa mogu biti proizvoljne duzine tj.:

'aaa+bb+cccc-e-yyy'

Pa u tom slucaju data resenja ne odgovaraju.
Dakle, imate li resenje za ovo???
Hvala
[ Goran Rakić @ 29.08.2002. 14:41 ] @
pogledaj upotrebu * u regexp-u u dokumentaciji (imas slican primer)
[ bOkIcA @ 29.08.2002. 18:32 ] @
Code:

$str = 'aaa+bb+cccc-e-yyy';

$str = ereg_replace('-', '#-', $str);
$str = ereg_replace('+', '#+', $str);

// sad string izgleda ovako 
// $str= 'aaa#+bb#+cccc#-e#-yyy';

$razdvojeni = explode('#', $str);


...mislim da ce ti pomoci.
[ Gojko Vujovic @ 29.08.2002. 18:34 ] @
Evo onda koda:

Code:

$string = 'aaa+bb+cccc-e-yyy';
if (preg_match_all('/([\+-]?[a-z]+)/', $string, $rezultat))
{
    while (list($n,$rez) = each($rezultat[0]))
        print "$n: $rez\n";
}


Ovo ti daje sledeci rezultat:

Code:

0: aaa
1: +bb
2: +cccc
3: -e
4: -yyy


Ukoliko ti ne treba + u matrici, mozes u drugom redu gornjeg koda zameniti '[\+-]' sa '[\-]'.
[ krvopije @ 30.08.2002. 00:33 ] @
Hvala ljudi na pametnim prijedlozima.....
Ovo poslednje od Gojka je u stvari pomoglo......