Merhaba arkadaslar,
regex konusunda tavsiyelerinize, daha dogrusu yardimlariniza ihtiyacim var.
bir turlu asagidaki algoritmayi olusturamadim regex ile
diyelim ki elimde asagida ki gibi bit string var.
$str="
kelime kelime -:-:-:- karsilik, karsilik; karsilik 2
kelime2 kelime2 -:-:-:- karsilik; karsilik (birseyler)
kelime 3 -:-:-:- karsilik (birseyler, birseyler), birsey (asd); birsey
";
ben bu stringi oncelikler satirlara boluyorum sonrada once -:-:-:- kisimlarinda explode(...) ile ayiriyorum. sonra karsiliklari da , (virgul) ve ; (noktali virgul) kisimlarinda explode ile ayiriyorum.
ama string dede gordugunuz gibi bu sekilde yaparsam problem oluyor, soyle ki: parantez icinde aciklamalar var ve bazi parantez icindeki aciklamalarda da , (virgul) var.
ama , (virgul) explode yaparken parantez icindekileri kaale almamasi lazim.
bende bunun icin sunu dusundum.
bu scringi once temizleyeyim soyle ki:
butun parantez icindeki verileri alayim baska bir degiskene atiyayim ve onu kaale almasin. ama temizleyecegim parantezler dede soyle bir zorunluluk olmali:
sadece icinde virgul gecen parantezleri ayikla
yani bu sekilde ayiklarsak stringin son hali soyle olacak
önce:
$str="
kelime kelime -:-:-:- karsilik, karsilik; karsilik 2
kelime2 kelime2 -:-:-:- karsilik; karsilik (birseyler)
kelime 3 -:-:-:- karsilik (birseyler, birseyler), birsey (asd); birsey
";
ayiklandiktan sonra:
$str="
kelime kelime -:-:-:- karsilik, karsilik; karsilik 2
kelime2 kelime2 -:-:-:- karsilik; karsilik (birseyler)
kelime 3 -:-:-:- karsilik , birsey (asd); birsey
";
bu sekilde bir regex [ (xyz,xyz) seklinde ama , zorunlulugu olacak icinde, virgul yoksa onu dikkate almiyacak ] nasil bir icerige sahip olmali bunu soracaktim. veyada sorunu anlattim, baska nasil tavsiyeniz olabilir bu konuda.