Autor | Zpráva | ||
---|---|---|---|
aDAm Profil |
#1 · Zasláno: 20. 6. 2008, 13:22:56
Zdravím,
existuje v php nějaká funkce v php která by dokázala filtrovat řetězec zadaný inputem? Bude se zadávat jen číslo ať už s tečkou nebo čárkou ale může se stát že někdo zadá i třeba znaky a to třeba s mezerou mezi čísly nebo bez. Potřebuju nějak ošetřit aby to odstranilo znaky? Nemá někdo nějaký tip jak to ošetřit? Do db pak tento řetězec uložím do typu decimal 10.2 |
||
Taps Profil |
#2 · Zasláno: 20. 6. 2008, 13:28:38
aDAm
regulární výrazy |
||
aDAm Profil |
#3 · Zasláno: 20. 6. 2008, 13:35:02
jo nad temi jsem taky premyslel akorat nevim jesli by to slo osetrit na vsechny znaky
|
||
Taps Profil |
#4 · Zasláno: 20. 6. 2008, 13:43:05
aDAm
zkus se podívat ještě na http://www.tvorba-webu.cz/php/typy.php to by ti také mohlo pomoci |
||
karbon Profil * |
#5 · Zasláno: 20. 6. 2008, 14:51:46
a co tak funkce floatval?
|
||
Str4wberry Profil |
#6 · Zasláno: 20. 6. 2008, 16:27:02
Karbone, ne. Zkus si to třeba s číslem „20,08“ nebo „20 08“.
|
||
karbon Profil * |
#7 · Zasláno: 20. 6. 2008, 16:54:16
Str4wberry
Zkus si to třeba s číslem „20,08“ nebo „20 08“. Omlouvám se. Příště budu lépe číst. |
||
ShiraNai7 Profil |
#8 · Zasláno: 20. 6. 2008, 16:55:08
function formatujCislo($vstup){ $vstup=(string)$vstup; $vystup=''; $delka=strlen($vstup); //odfiltrovani neciselnych znaku for($x=0; $x<$delka; $x++){ $znak=substr($vstup, $x, 1); if((ord($znak)>47 and ord($znak)<58) or $znak=='.' or $znak==','){ $vystup.=$znak; } } //nahrazeni carek teckama $vystup=str_replace(',', '.', $vystup); //prevod na cislo, navrat return (float)$vystup; } |
||
Str4wberry Profil |
#9 · Zasláno: 20. 6. 2008, 17:25:25 · Upravil/a: Str4wberry
Proč tak složitě, ShiraNai7?
ADAme, regulární výrazy budou nejjednodušší: preg_replace("/[^\d,\.]/", "", $str) |
||
srigi Profil |
#10 · Zasláno: 20. 6. 2008, 21:55:00
nieco by slo vymysliet aj z tohoto kodu, ktory bude IMHO rychlejsi ako startovanie celeho enginu pre regulare
vstup = "12 34.56 65h46 0g88"; echo "<pre>sour: $vstup<br>"; // debug $vstup = str_replace(array(' ', '\n', '\t', 'g'), '', $vstup); print_r($vstup); // debug $vystup = sprintf("%f", $vstup); echo "<br>out: $vystup"; //debug |
||
Str4wberry Profil |
#11 · Zasláno: 20. 6. 2008, 22:37:26
„ktory bude IMHO rychlejsi ako startovanie celeho enginu pre regulare“
To dost pochybuji, a proto jsem to zkusil změřit. Srovnatelné. Řešení uvedené mnou bylo spíše (opravdu nepatrně) rychlejší. Navíc je spolehlivější. |
||
aDAm Profil |
#12 · Zasláno: 21. 6. 2008, 17:54:22
pánové díky moc za rady.
|
||
Časová prodleva: 16 let
|
0