Vinnaren i pepparkakshustävlingen!
2018-11-17, 23:29
  #1
Medlem
Bara för att lära mig lite mer så tänkte jag se om jag kunde utföra några enkla beräkninigar i PHP.
Google gav mig följande:
https://stackoverflow.com/a/18880821

Allt fungerar som förväntat. Tar utgångspunkt i att skicka in 50+5.

Kör jag en var_dump på resultatet när jag har textReqeust satt till "50+5" så får jag ut följande:
string(4) "50+5"

Men, nu kommer det som är mer spännande, när jag kallar på denna filen från mitt python-script så får jag istället:
string(8) "50+5"

Mitt plustecken som ställer till det av en eller annan grund
50-5 = string(4) "50-5"
50/5 = string(10) " 50/5"
50+5 = string(8) "50+5"
505 = string(10) " 505"

Kod:
$textReqeust json_decode(file_get_contents('php://input'))->text;

#textReqeust = "50+5"
$ma $textReqeust;

  
ob_start();
  
var_dump($ma);
  
$result ob_get_clean();
  
  if(
preg_match('/(\d+)(?:\s*)([\+\-\*\/])(?:\s*)(\d+)/'$ma$matches) !== FALSE){
    
$operator $matches[2];

    switch(
$operator){
        case 
'+':
            
$resultText $matches[1] + $matches[3];
            
$resultText "1";
            break;
        case 
'-':
            
$resultText $matches[1] - $matches[3];
            
$resultText "2";
            break;
        case 
'*':
            
$resultText $matches[1] * $matches[3];
            
$resultText "3";
            break;
        case 
'/':
            
$resultText $matches[1] / $matches[3];
            
$resultText "4";
            break;
    }

    
$resultText $text " = " $result

Hur kan jag finna ut av vad som egentligen kommer in till mitt PHP-script som gör att de räknas som flera karaktärer?
__________________
Senast redigerad av uffe98 2018-11-17 kl. 23:57.
Citera
2018-11-18, 21:38
  #2
Medlem
lasternassummas avatar
Citat:
Ursprungligen postat av uffe98
Bara för att lära mig lite mer så tänkte jag se om jag kunde utföra några enkla beräkninigar i PHP.
Google gav mig följande:
https://stackoverflow.com/a/18880821

Allt fungerar som förväntat. Tar utgångspunkt i att skicka in 50+5.

Kör jag en var_dump på resultatet när jag har textReqeust satt till "50+5" så får jag ut följande:
string(4) "50+5"

Men, nu kommer det som är mer spännande, när jag kallar på denna filen från mitt python-script så får jag istället:
string(8) "50+5"

Mitt plustecken som ställer till det av en eller annan grund
50-5 = string(4) "50-5"
50/5 = string(10) " 50/5"
50+5 = string(8) "50+5"
505 = string(10) " 505"

Kod:
$textReqeust json_decode(file_get_contents('php://input'))->text;

#textReqeust = "50+5"
$ma $textReqeust;

  
ob_start();
  
var_dump($ma);
  
$result ob_get_clean();
  
  if(
preg_match('/(\d+)(?:\s*)([\+\-\*\/])(?:\s*)(\d+)/'$ma$matches) !== FALSE){
    
$operator $matches[2];

    switch(
$operator){
        case 
'+':
            
$resultText $matches[1] + $matches[3];
            
$resultText "1";
            break;
        case 
'-':
            
$resultText $matches[1] - $matches[3];
            
$resultText "2";
            break;
        case 
'*':
            
$resultText $matches[1] * $matches[3];
            
$resultText "3";
            break;
        case 
'/':
            
$resultText $matches[1] / $matches[3];
            
$resultText "4";
            break;
    }

    
$resultText $text " = " $result

Hur kan jag finna ut av vad som egentligen kommer in till mitt PHP-script som gör att de räknas som flera karaktärer?

Jag förstår nog inte frågan...
Jag är inte helt övertygad att jag förstår din fråga eftersom du skriver om:
– PHP
– Data lagrat i filer
– Python

men inte vad du har för dator eller operativsystem.

Att ingen svarat beror nog på att du öppnar på locket till en ormgrop utan att vara medveten om det.

Vilka teckenkodningar kan vara inblandade?
Här är några vanliga:
ASCII som minst fanns som US och svensk. Vissa programmeringsspråk har problem med tecken utanför ASCII.
Windows-1252
ISO-8859-1 (Kallas ibland ISO Latin 1)
UTF-8
UTF-16

Lite förenklat kan man säga att ASCII är en 7-bits kod, men 128 olika tecken, nästa två är 8-bitarskoder med 256 olika tecken och sedan kommer UTF som är lite hokus pokus.
UTF-8 är 8-bitars, men genom att tillåta att vissa tecken kan ha flera byte data så inrymmer det t.ex. kerylliska, kinesiska, japanska, arabiska och mer därtill också. UTF-16 "börjar" med 16 bitar.

Vad ska man använda?
Man önskar att man kunde säga "jag standardiserar med UTF-8". Det brukar kunna fungera ganska bra. När du börjar rekommenderar jag att du reder ut alla inställningar som finns och som kan påverka vilken teckenkodning som används i olika sammanhang.

Här är några exempel på frågor som är värda att tänka på:
– Vad använder du för teckenkodning i din texteditor?
– Vilken teckenkodning använder du i terminalen/kommandofönstret i datorn?
– Om du kör PHP, hur har du definierat teckenkodning i PHP?
– Om du skapar sidor för webben, vilken kodning vill du köra mot webben?
– Hur ska data i databasen kodas?
– Hur ska data i databasen sorteras?
– Om du använder filer, hur ska data i filer kodas?

Om man försöker använda UTF-8 och sortera på svenska så är det kanske nåt att börja med. Men då ska man tänka på att det är inte säkert att dom vill ha samma sorteringsordning i Norge och Danmark.
UTF-8 är klockrent i bemärkelsen att det kan hantera alla språk. En komplikation är att många lite ovanliga tecken lagras som flera tecken. Det kan man behöva tänka på när man programmerar.
Ett exempel:
Ett "vanligt" - (bindestreck) kodas som 2B (hexadecimalt).
Ett matematiskt minus kodas som 2212 (hexadecimalt).

Strängen "2-1" är tre tecken, tre byte, men "2−1" är också tre tecken, men fyra byte eftersom ett matematiskt minus lagras som två byte.

Kanske vet du allt det här? Kanske har jag delvis svarat på din fråga?
Om inte, fråga vidare, så kanske jag eller någon annan kan svara!

Jag tolkar din fråga som att du hoppar mellan olika teckenkodningar utan att det är din avsikt. Försök att få alla inblandade (PHP, filhantering, filsystem och python) att prata samma "språk", t.ex. UTF-8.
Jag blir ibland tvungen att "dumpa" (hexdump) för att se vad jag har fått, när det inte fungerar som jag väntat mig. Då brukar det, utgående från dumpen, gå att se vad som är fel.

Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback