Autor Zpráva
Nat
Profil *
Zdravím,

jaké funkce použít na tenhle typ regulárního výrazu:

z db načtu údaj v tomto tvaru:

$veci = "Zelené kalhoty (Toma)";

a chtěl bych dostat tyhle dvě proměnné:

$vec = "Zelené kalhoty";
$majitel = "(Toma)";

jinak ta proměnná má vždycky jinou délku, ale vždycky končí údajem v závorce. Nedělali už jste někdo něco podobného?

Dík za nápady Nat
WertriK
Profil *
$fields = ereg("^(.*) \( (.*) \)", $in, $out);

echo $out[0];
echo $out[1];
echo $out[2];

ale pochybuju o funkcnosti
24k
Profil *
$veci = "Zelené kalhoty (Toma)";

preg_match("/(.*)(\(.*\))/", $veci, $DATA);
echo $DATA[1];
echo $DATA[2];
halogan
Profil
24k: spravne, ale trochu bych to upravil:
preg_match("~(.+)\s+(\(.+\))~", $veci, $match);
print_r($match);
24k
Profil *
hh :]
Oswald
Profil
Anebo taky třeba takhle :)

$data = preg_split('/\s+(?=\(.*\)$)/', $veci);
halogan
Profil
Oswald, 24k: Zlehcujete situaci, ale mne jde jen o kvalitni psani regexpu. 24k napsal regexp, ktery se musi zbytecne trimovat a navic kdyz mu poslu "()", tak mi to v pohode rozparsuje. Nechapu, proc se pouziva *, kdyz se ocekava textovy vstup. Kdyz tak na to koukam, tak mi tam pro uplnost chybi ^ a $.
24k
Profil *
Ja nic nezlehcuju, ja regexpy neumim, praskl jsem to z hlavy. Tvoji pripominku si beru k srdci
Nat
Profil *
Dík fachá to pěkně :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.