Autor | Zpráva | ||
---|---|---|---|
Skogen Profil * |
#1 · Zasláno: 26. 9. 2013, 09:46:26
Ahoj,
načítám samotné číslo z textového souboru a chci s ním dál pracovat jako s číslem uloženým v proměnné $limit, ale: - i když jde o samotné číslo, je proměnná typu string - když použiju fci int nebo intval, bude to sice integer, ale s nulovou hodnotou, jako by se před číslem nacházel nějaký znak, kvůli kterému se vrací 0... Zabralo mi až krkolomné ukládání čísla se znaky před číslicí, oříznutí řetězce a následně konverze string na integer: $limit = file_get_contents('./files/limit/limit.txt'); $limit = substr($limit, -2); $limit = (int)$limit; ale určitě to jde i nějak jednodušeji, jen na to ne a ne přijít... |
||
Tori Profil |
$limit = (int) preg_replace('~\D+~', '', (string) file_get_contents('./files/limit/limit.txt')); ?
edit: Doplnila jsem přetypování, přeci jen file_get_contents může vracet i FALSE. Stejně by asi bylo lepší načtení souboru dát mimo a ověřovat návratovou hodnotu. Tohle byl jen naznačený způsob. |
||
PostCC Profil |
#3 · Zasláno: 26. 9. 2013, 10:21:00
Skogen:
Protože v tom souboru je číslo uloženo pravděpodobně i se znaky konce řádku (hexa "0A0D"), čemuž by odpovídal i ten workaround s odříznutím posledních dvou znaků. Bohatě postačí odříznout prázdné znaky, případně ještě zaokrouhlit dolů, ať máme jistotu, že je to integer, tzn.: $limit = Floor(Trim(File_Get_Contents("./files/limit/limit.txt"))); Nicméně řešení Tori je ultimativní, zabrání výskytu jakýchkoli jiných nečíselných znaků. Upozorňuji, že pokud bys se z jakéhokoli důvodu do toho řetězce dostal nějaký nenumerický znak, např. "1e5", bude výsledkem u Tori "15", v mém řešení "100000". |
||
Skogen Profil * |
#4 · Zasláno: 26. 9. 2013, 11:55:08
Děkuji za řešení i vysvětlení.
PostCC: trim jsem zkoušel, vracel se integer s 0, floor teď vrací double s 0... |
||
PostCC Profil |
#5 · Zasláno: 26. 9. 2013, 12:49:21
Skogen:
OK, pak to zřejmě bude nějaký jiný prázdný znak, např. sekvence "C2A0" je v UTF-8 tzv. "tvrdá mezera" a TRIM ji rovněž nedokáže odstranit bez dodatečných parametrů. Pak zřejmě vyhoví Toriino řešení. |
||
Skogen Profil * |
#6 · Zasláno: 26. 9. 2013, 13:00:50
Ještě jednou díky.
|
||
Časová prodleva: 11 let
|
0