
[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.
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.