[ sasho.new @ 05.03.2012. 17:45 ] @
Potreban mi je proveren regexp koji može da pronađe zareze u okviru SVIH zagrada i zameni ih sa tab-ovima t.j. \t. Dakle nešto poput:

Code:
neki, tekst, (p1, p2, p3) neki tekst, tekst, (p1, p2, p3)


treba da postane

Code:
neki, tekst, (p1\t p2\t p3) neki tekst, tekst, (p1\t p2\t p3)


Zarezi VAN zagrada treba da ostanu netaknuti.

Ako neko ima provereno rešenje za ovaj problem neka mi se javi (može i na [email protected]).

Hvala unapred.



[Ovu poruku je menjao sasho.new dana 05.03.2012. u 20:38 GMT+1]
[ plus_minus @ 05.03.2012. 18:10 ] @
Kad god možeš, gde god možeš, koristi str_replace() funkciju. Brže radi i mnogo jednostavnije za korišćenje nego regexp.

Code (php):


$var = 'neki tekst (p1, p2, p3) neki tekst';

$var = str_replace(',', "\t", $var);

echo $var;

 


Ako imaš dakle želju da ostaviš ostale zareze koji se pojavljuju van zagrade, netaknute, nepromenjene, treba ti još jedna linija koda i dobićeš to što tražiš.

Tu jednu liniju koda probaj sam da izmućkaš.

Ako neće a dao si sve od sebe, pusti kod da vidimo gde si zapeo.
[ sasho.new @ 05.03.2012. 18:19 ] @
Vaš primer bi zamenio SVE zareze u tekstu, kao što i sami primećujete, sa tabovima. To nije ono što je opisano u temi no hvala na sugestiji.
[ plus_minus @ 05.03.2012. 18:22 ] @
NEma na čemu..

Citat:
Ako imaš dakle želju da ostaviš ostale zareze koji se pojavljuju van zagrade, netaknute, nepromenjene, treba ti još jedna linija koda i dobićeš to što tražiš.

Tu jednu liniju koda probaj sam da izmućkaš.

Ako neće a dao si sve od sebe, pusti kod da vidimo gde si zapeo


Inače, ti i nemaš druge zareze osim tih 2 koji se nalaze u zagradi.

Bez obzira, razumeo sam ja tebe perfekt.

Bacaj se na posao.
[ sasho.new @ 05.03.2012. 18:27 ] @
tačno, izmenio sam original ;)
[ plus_minus @ 05.03.2012. 19:20 ] @
Ne znam dokle si stigao.. i da li si pokušao nešto uopšte, nije ni bitno.

Sve u svemu, malo sam te izlagao. Nije baš jedna linija, ali je blizu. :)

Evo ti ovo dole u code tagu, a ti, ako ti ne ide baš rad sa string funkcijama,
uzmi i daj sebi jedan zadatak na kontu priloženog u code tagu, za početak.

A zadatak neka bude sledeći: napravi sebi jednu funkciju pomoću priloženog.

Funkciju koja će da vrši izmenu na osnovu onoga što promenjiva $tab sadrži u sebi.

Pozz.

Code (php):


$var = 'neki, tekst, (p1, p2, p3) neki tekst, tekst,';

$tab = "\t";

$start = '(';

$end = ')';

$brExtr1 = substr( strpbrk ( $var, $start ), 1 );

$PosEnd = strpos ( $brExtr1, $end);

$brExtr2 = substr ( $brExtr1, 0, $PosEnd );

$varRpl = str_replace ( ',', $tab, $brExtr2 );

$var = str_replace( $brExtr2, $varRpl, $var );

echo $var;

 


Da dodam još jednu bitnu sitnicu.. ovo radi ako je u pitanju samo jedna zagrada i unutra zarezi.

Ne verujem da hoće i drugu zagradu sa zarezima da zameni, što opet, neće biti veliki problem da rešiš.

[Ovu poruku je menjao plus_minus dana 05.03.2012. u 20:42 GMT+1]