Kom ihåg mig?
Home Menu

Menu


PHP: Jämföra två strängar

Ämnesverktyg Visningsalternativ
Oläst 2015-01-25, 23:57 #1
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
Standard PHP: Jämföra två strängar

Hej!

Ber om ursäkt för mina dåliga programmeringskunskaper, men har ett litet bekymmer jag hade uppskattat hjälp med .

Jämför en sträng med ett resultat jag hämtar från en databas, från vad jag kan se borde dessa matcha varandra. Kan UTF-8 påverka något om jag t.ex hämtar strängen jag ska jämföra med från en fil som inte är UTF-8-encoded och jämför med en databas som är det? Lyckas nämligen inte få dem att matcha.

Tack på förhand!
TheCheesePolice är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-26, 09:05 #2
coredevs avatar
coredev coredev är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2007
Inlägg: 1 554
coredev coredev är inte uppkopplad
Bara ett inlägg till!
coredevs avatar
 
Reg.datum: Sep 2007
Inlägg: 1 554
Ja, om en sträng är i UTF8 och en annan i ISO8859-1 så kommer de inte att matcha (givet att de innehåller tecken från den utökade delen, vilket man nog bör förutsätta att de kan). Vad du får göra är att göra om en av strängarna till det andra formatet innan jämförelse, det kan du göra med t.ex.: http://php.net/manual/en/function.iconv.php
coredev är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-26, 22:53 #3
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
Citat:
Ursprungligen postat av coredev Visa inlägg
Ja, om en sträng är i UTF8 och en annan i ISO8859-1 så kommer de inte att matcha (givet att de innehåller tecken från den utökade delen, vilket man nog bör förutsätta att de kan). Vad du får göra är att göra om en av strängarna till det andra formatet innan jämförelse, det kan du göra med t.ex.: http://php.net/manual/en/function.iconv.php
Underbart, stort tack för hjälpen!
TheCheesePolice är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-29, 00:40 #4
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
Bumpar denna lite.

Lyckas nu hämta/matcha SQL-data utan åäö i, men så fort något innehåller ä så hittas ingenting. Har dubbelkollat att min php-fil är sparad i UTF-8, har kollat att min sträng är UTF-8, tabellens kollationering är utf8_general_ci. Finns där något annat jag måste hålla koll på? Sliter snart av mig håret..
TheCheesePolice är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-29, 01:38 #5
Lumax Lumax är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 610
Lumax Lumax är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 610
mb_internal_encoding("UTF-8");
Kör även SET NAMES 'utf8', om du kör MySQL.
Lumax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-29, 09:37 #6
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Lägg till charset i din anslutning till databasen också. Med PDO skickar du med charset=utf8 i din connection string och med mysqli har du mysqli::set_charset, gamla mysql bör du inte använda så där kommenterar jag inte.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-29, 09:51 #7
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
TheCheesePolice TheCheesePolice är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2011
Inlägg: 550
Citat:
Ursprungligen postat av Lumax Visa inlägg
mb_internal_encoding("UTF-8");
Kör även SET NAMES 'utf8', om du kör MySQL.
Testar det där ovan! Det sistnämnda har jag provat, måste det göras varje gång?

Citat:
Ursprungligen postat av Clarence Visa inlägg
Lägg till charset i din anslutning till databasen också. Med PDO skickar du med charset=utf8 i din connection string och med mysqli har du mysqli::set_charset, gamla mysql bör du inte använda så där kommenterar jag inte.
Hehe, förmodligen det incitamentet jag behöver. Har precis lyckats lära mig grundläggande PHP till den grad jag kan använda det, det här med PDO gör det väldigt mycket mer komplicerat, i varje fall i mitt huvud. Finns det några speciella fördelar med att använda det?
TheCheesePolice är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-29, 10:18 #8
x264 x264 är inte uppkopplad
Flitig postare
 
Reg.datum: Dec 2013
Inlägg: 342
x264 x264 är inte uppkopplad
Flitig postare
 
Reg.datum: Dec 2013
Inlägg: 342
Citat:
Ursprungligen postat av TheCheesePolice Visa inlägg
Testar det där ovan! Det sistnämnda har jag provat, måste det göras varje gång?


Hehe, förmodligen det incitamentet jag behöver. Har precis lyckats lära mig grundläggande PHP till den grad jag kan använda det, det här med PDO gör det väldigt mycket mer komplicerat, i varje fall i mitt huvud. Finns det några speciella fördelar med att använda det?
Säkerhetsmässigt, då de förhindrar så kallade SQL-injections.

T.ex. såhär kan det se ut
Kod:
$sql = 'SELECT * FROM users where userId = :id';

$st = $db->prepare($sql);

$st->execute(array(
	"id" => $id
));

if ($st->rowCount() === 0) {
	// användaren existerar inte
       // sen om du vill returna eller vad du vill göra är upp till dig
       // annars kan du ha en else-sats under förstås.
}

$user = $st->fetchObject();
Så mycket svårare är det ju inte att lära sig.

Helt klart ett "måste" i min mening, så det är bara att mata in

Jag är övertygad om att du lär dig det rätt snabbt
x264 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-01-29, 10:37 #9
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av TheCheesePolice Visa inlägg
Testar det där ovan! Det sistnämnda har jag provat, måste det göras varje gång?


Hehe, förmodligen det incitamentet jag behöver. Har precis lyckats lära mig grundläggande PHP till den grad jag kan använda det, det här med PDO gör det väldigt mycket mer komplicerat, i varje fall i mitt huvud. Finns det några speciella fördelar med att använda det?
Största anledningen för den som inte känner till mer är att mysql_-funktionerna är "deprecated" vilket betyder att man planerar att ta bort den ur språket. Detta görs framförallt av säkerhetsskäl. Med andra ord är din kod inte framtidssäker om du använder mysql_. Det betyder också att ingen aktiv utveckling sker på funktionen.

Sen finns det även en hel del funktion som saknas i mysql-extensionen, t ex:
- Prepared statements (som förutom säkerhet även bla ger dig möjligheten till snabbare upprepande queries)
- Asynkrona queries (fire and forget)
- Bra felhantering (som du också kan styra själv enligt smak o tycke)
- Stored procedures
- OOP api
- Bra stöd för transaktioner

Sen säkert en mängd till som inte dyker upp nu. Kort sagt kommer du sakna massa funktionalitet som du får plåstra och krångla för att kunna emulera.

Som jag tycker x264 visar så är det inte så svårt att lära sig ...
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 10:03.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017