Pitäisi kaapata merkkijonoista suluissa olevat sanat, esim
"tämä(on)testi" => "(on)"
"tämä(on(toinen))testi" => "(on(toinen))"
"(tämäkin )on myös testi" =>"(tämäkin )"
"tämä on ( testi)" =>"( testi)"
"(tämä (on) myös testi)" => "(tämä (on) myös testi)"
Osaisiko joku väsätä funktion, joka palauttaisi suluissa olevan tekstin annetusta merkkijonosta?
"tämä(on)testi" => "(on)"
"tämä(on(toinen))testi" => "(on(toinen))"
"(tämäkin )on myös testi" =>"(tämäkin )"
"tämä on ( testi)" =>"( testi)"
"(tämä (on) myös testi)" => "(tämä (on) myös testi)"
Osaisiko joku väsätä funktion, joka palauttaisi suluissa olevan tekstin annetusta merkkijonosta?
Vastaukset 3
Vanhimmat
Tässä jotain sähellystä. Ei testattu ja kökkösesti koodattukin, muttei vaan oo aikaa. En edes sisennyksiä ehtinyt tehdä. Jep ja tuskin tämä edes toimii täysin oikein. Jotain apua tästä sentään voi olla... tai sitten ei.
function kikkare($str)
{
$sanat = "";
$pituus = strlen($str);
$apu = 0;
while($apu < $pituus)
{
if($str[$apu] == '(' && $start != "on")
{
$start = "on";
}
else if($str[$apu] == ')')
{
$start = "off";
}
if($start == "on")
{
$sanat .= $str[$apu];
}
$apu ;
}
$sanat = str_replace("(", "", $sanat);
return $sanat;
}
PHP:stä löytyy paljon funktioita merkkijonojen käsittelyyn, niin turha koodata itse uusia
$merkkijono = "tama (on (esimerkki) jono)";
$tulos = strstr($merkkijono, '(' ); //mjono ekasta sulusta loppuun asti
$loppukohta = strrpos($tulos, ')' ); // vika sulku kiinni
//katkaistaan viimeisen sulun jälkeen
$tulos = substr($tulos, $loppukohta 1);
echo $tulos; //tulostaa (on (esimerkki) jono)
Oli vähän puutteellinen tuo substr()-funktio.
Eli pitää olla:
$tulos = substr($tulos, 0, $loppukohta 1);
Aloituskohtana oli merkkijonon pituus.
Aloituskohtahan = 0. Muuten OK.