Autor Zpráva
avaster
Profil
mam premennu:
$premenna = "ha{bb}ha{cc}";

potrebujem z nej dostat len to "bb" a "cc" do jedneho array; a nasledne to {bb} a {cc} z $premenna vymazat (teda ostane len "haha
")

nenapadlo ma ziadne riesenie .. vopred vdaka za pomoc..
Alphard
Profil
$string = "ha{bb}ha{cc}";
$pattern = "~{[[:alpha:]]{2}}~";
preg_match_all ($pattern, $string, $nalezeno);
$string = preg_replace ($pattern, "", $string);


Ten regulár je dost tvrdý (v {} musí být právě dvě písmena), upravte si to podle potřeby.
avaster
Profil
vdaka, bohuzial by som potreboval skor aby bol ten pocet znakov v {} neobmedzeny, no ale myslim ze to zrobim inym sposobom lebo cez preg_match sa mi to zda nemozne/prilis zlozite..
tiso
Profil
avaster: preg_replace je srpávne riešenie, len ten $pattern bude musieť byť ungready.
Alphard: ten riadok 3 tam máš načo?
avaster
Profil
tiso: mohol by si uviest priklad? nechapem presne tomu vyrazu "ungready"
Alphard
Profil
tiso:
ten riadok 3 tam máš načo?

avaster chce:
potrebujem z nej dostat len to "bb" a "cc" do jedneho array
Navrhuješ jiný postup?
Leopik 2x
Profil
Ja viem, blby postup ale...
$a = "ha{bb}ha{cc}";
$b = explode("{", $a);
for ($i = 0; i < count($b), $i++) {
  $new_array[$i] = explode("}", $b[$i]);
}

Takto si najdem slova v tych zatvorkach a ten zbytok
$aa = "ha{bb}ha{cc}";
$bb = explode("{", $a);
for ($i = 0; i < count($b), $i++) {
  if (str_replace("}", " ", $bb[$i]) != $bb[$i]) {
    $c = explode("}", $bb[$i])
    $string .= $c[1];
  } else {
    $string .= $bb[$i];
  }
}

Je to dost skaredy kod a niesom si isty ci bude fungovat ale mal by. Dufam ze si ho pochopil pretoze ked si ho precitam este raz tak ho mozno nepochopim ani ja sam
tiso
Profil
Alphard: aha, pozeral som sa na ten tvoj skript a nie na zadanie...
avaster http://www.root.cz/clanky/regularni-vyrazy-v-prikladech/
http://cs.wikibooks.org/wiki/Regulární_výrazy
http://www.kit.tul.cz/~satrapa/docs/regvyr/cast2.html
Yur4Y
Profil
Miesto dvoch explode() by mohlo byť vhodnejšie strtok() alebo preg_split().
Leopik 2x
Profil
Ja viem, je to blbost ale pouzit sa to da...
Alphard
Profil
avaster:
bohuzial by som potreboval skor aby bol ten pocet znakov v {} neobmedzeny
$pattern = "~{[[:alpha:]]+}~u";
Jestli se ti vynález od Leopika 2x zdá lepší, budiž :-)

PS: Na radu tisa jsem přidal parametr u, ale nevidím pro něj důvod.
avaster
Profil
Alphard: vdaka, funguje to podla mojich predstav..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: