Autor Zpráva
gogy27
Profil *
aka je funkcia v PHP aby som oddelil cisla od textu?
gogy27
Profil *
dam ako value napr value="3.20 sunka"
a chcem ododelit cisla od textu
chcem mat cislo zvlast v nejakej premennej a aj text
Alphard
Profil
rozdělit podle mezery?
explode()
AM_
Profil
pomůže ti regulární výraz,
preg_match('/([\\+\\-]?[0-9]+\\.?[0-9]*) (.*)/', $value, $matches)
, v $matches[1] bys pak měl mít číslo, v $matches[2] zbytek za mezerou (tj text).

//EDIT: pokud se v textové části nevyskytují další mezery, je Alphardovo řešení jednodušší ;)
gogy27
Profil *
ale explode pracuje s poliami ci nie?
dRaGen
Profil
Explode vezme string a rozdělí ho dle zadanýho znaku do pole ...
$neco = explode(" ","Ahoj svete tady na jakpsatweb");
print_r($neco); //neco[0] = "Ahoj" neco[1] = "svete" neco[2] = "tady" ...
 
Alphard
Profil
možností je více, i kdyby tam byly mezery, lze použít např.
$p = explode (" ", $retezec);
$cislo = array_shift ($p);
$retezec = implode (" ", $p);

nebo regulár od AM_ (nekontroloval jsem, ale věřím mu), ale opět vám vrátí pole
gogy27
Profil
trosku komentar ku tomu skriptu :P by si nemohol dat?
Medvídek
Profil
gogy27
http://cz.php.net/function.explode http://cz.php.net/function.array_shift http://cz.php.net/function.implode
gogy27
Profil
function rozdel ($vstup) {
  $value = $dodatok.$vstup;
  $vystup = $matches.$vstup;
  preg_match('/([\\+\\-]?[0-9]+\\.?[0-9]*) (.*)/', $value, $vystup);
  echo $vystup[1]. "<br>";
  echo $vystup[2]. "<br>";
  echo $vystup[6]. "<br>";
  echo $vystup[4];
}


skusam to takto riesit ale nejak nic nevypise tu je nazorna ukazka mozte si to vyskusat http://www.patolog.wz.cz/prilohy.php
gogy27
Profil
newiem ci robim nieco zle alebo mam skusit iny priklad z hore uvedenych
Alphard
Profil
$dodatek a $matches berete kde? pozor, nejsou globální
$vystup = $matches.$vstup; je imho zbytečné

a pak výběr 1, 2, 6 a 4? jak to má fungovat?
AM_
Profil
function rozdel ($vstup) {
  preg_match('/([\\+\\-]?[0-9]+\\.?[0-9]*) (.*)/', $vstup, $vystup);
  echo $vystup[1]. "<br>";
  echo $vystup[2]. "<br>";
}

rozdel("3.30 rohlik");

Takhle by to mohlo fungovat. Ty nesmysly okolo, cos tam napsal, sem ani nepochopil co maji delat :)
//EDIT: ale jeste spis bys v te funkci misto echo mel psat treba $vysledek .= a nakonec return $vysledek a pak echo rozdel(...), jestli vis, oc myslim, ono echovat primo ve funkci neni idealni :)
gogy27
Profil
function priloha ($id, $value, $nazovPrilohy, $cena)
{
echo '<input type="checkbox" name="dodatok'.$id.'" value="' .$value. '">'. $nazovPrilohy.' '.$cena.' €<br />';
}

je to lamacke ale mi nechcelo ist ako pole
AM_
Profil
ted vubec nechapu co jsi napsal. a] co ti nechtelo jit jako pole? b] pekny kod, a co s nim? :)
gogy27
Profil
to malo patrit k vysvetleniu ALPHARD ze skade mam tie premenne
a ako pole mi nechcelo ist dodatok[]
AM_
Profil
aha, sry, Alphardova prispevku jsem si nevsiml.
gogy27
Profil
DAKUJEM PEKNE UZ MI TO FACHA :)
gogy27
Profil
Mam este jeden problem bol by som rad keby niekto pomohol tak ako nedavno :)

Mam taku funkciu
function priloha ($value, $nazovPrilohy, $cena)
{ 
         echo '<input type="checkbox" name="dodatok[]" value="' .$value. '">'. $nazovPrilohy.' '.$cena.' €<br />';
} 


a potom volam
priloha ('1,50 sunka', 'Šunka', '1.50');
priloha ('1,50 salsma', 'Saláma', '1.50');
priloha ('1,50 slanina', 'Slanina', '1.50');
priloha ('1,50 klobasa', 'Klobása', '1.50');
priloha ('1,50 tuniak', 'Tuniak', '1.50');
......


ako potom oddelit to cislo od textu
ked si vyberie prilohu
AM_
Profil
uplne stejne, a v te value bych pouzival spis tecku nez carku, PHP bere jako oddelovac desetinne casti tecku takze bys to stejne v kodu musel nekde prevest.
gogy27
Profil
a netreba to pole dajak pomocou foreach prechadzat?
Alphard
Profil
gogy27
kdyby jste si vytvořil strukturu, např.
$vyrobky = array(
1 => array("šunka", 1.5),
2=> array("Klobása", 1.5)
);


tak to můžete v cyklu snadno vypsat a do value nacpat klíč, v ukázce 1 nebo 2, podle kterého potom snadno najdete výrobek i cenu

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:

0