
[PHP]Úprava řetězce
Zdravím
Potřeboval bych upravit řetězec například "25.55" a když chybí "5.55" číslice před desetinou čárkou tak to doplnit "0" , já vím že je to pro někoho hračka ale já bych nad tím strávil mládí díky
https://www.php.net/manual/en/function.sprintf.php
Já když to upravím takto ten řádek vyznačený v příloze tak se to nevykoná kde je chyba? díky
Daj sem výpis iba toho, čo Ti z toho leze:
<?php
$username = $_GET['username'];
echo $username;
bez Tvojich úprav !!!
Je lepšie ladiť pomocou
či
čo vypíše neskonvertovaný obsah a k tomu aj dátový typ. Použitie echo automaticky konvertuje obsah na reťazec.
Vracím se tomu
Tento řetězec mi posílá ESP8266 na sever
22.623.46-59
což je 22.62 teplota
3.46 getVcc
-59 WiFi.RSSI()
to jsem měl seřízeno dobře
ale jakmile spadne teplota pod 10 stupňů tak mi to vypisuje blbosti
například 9.56C, .46-Volt, 52dB
jak upravit aby to fungovalo dobře? díky
Ach jo. Ale abys tu napsal, jak vypadají surová data při té chybné variantě, to ne.
Nemám nebo nic mě nenapadá čím to teplotní čidlo podchladit
dát vodu do mrazáku a potom ho tam ponořit ?
To už nechám na tobě.
Hlasuju pro tekutý dusík.
To chce čekat déle 11.00C, 3.46Volt, -57dB 18:51:03 25/12/20 dál jsem to do ledničky/mrazáku
surová data 5.813.46-58
výpis 05.813C, .46-Volt, 58dB 19:27:03 25/12/20
<?php
$username = $_GET['username']; //make sure you filter these values, before showing them
echo $username; //$username == "john"
$sez = $username;
s d/m/y");
$tep=substr($sez,0,5);
if (strlen($tep)== 5) {$tep="0".$tep;}
$volt=substr($sez,5,4);
$db=substr($sez,9,4);
$dev=$tep."C, ".$volt."Volt, ".$db."dB ";
$datum = date("H
//if (time() - filemtime("./IP/zap.txt") > 1200){
$relace = fopen("./IP/zap.txt", "a+"); // Otevřeme soubor
fwrite($relace,$dev );
//fwrite($relace," C ");
fwrite($relace,$datum);
fwrite($relace,"\r\n"); // Zapíšeme text do souboru
fclose($relace);
kde dělám chybu? díky
Tak to bych asi řešil spíš regulárním výrazem, než parsováním po pevných blocích:
To je pro mně "španělská vesnice "
já dělám někde chybu v nastavování pozic a délce jednotlivých podřetězců
jak to upravit? díky
Tak to je snad vidět na první pohled, že ty údaje nemají fixní délku. A jak to upravit? No můžeš třeba hledat pozice desetinných teček a podle toho se rozhodovat. Ale to mi ten regex přijde jako jednodušší řešení.
Ale jak doplním o tu "0" na základě zjištění 9.00 tak to přece je stejný počet míst na rozdělení do podřetězců nebo ne ?
díky
Jenže to bys tu nulu musel přidat, ještě než to rozřežeš na části. Jakmile ji přidáš k už (špatně) rozřezané části, tak je ti to na nic.
Tak co mi radíš ?
díky
Použít regulární výraz.
Jak se to dělá ?
díky
Jsi jednička kdyby tady byla ekomotiva ruka s palcem na horu tak ti to sem dám , nemusí tam ani podmínka s přidáním nulou.Pro změnu se vyskytl problém ukazováním minusovim hodnotou ale to bude asi problém s knihovnou pro ds18b20 diky
na ktorej pozícii je teplota, napätie...vieš len Ty...
Uprav si zdrojový kód v ESP8266 tak, aby tie data posielal oddelené napr. čiarkou, (alebo iným znakom):
22.62, 3.46, -59
keď následne na serveri "vyseparuješ" všetky reťazce, oddelené čiarkou, vyhneš sa všetkým nepríjemnostiam a budeš dostávať vždy takú hodnotu, ktorú potrebuješ pre konkrétny údaj...
Chcel som napísať niečo v podobnom duchu. Akurát s tým rozdielom, aby tú úpravu toho čísla urobil tiež už v 8266.