Vecka 35, Fredag 3 September 2010 Prenumerera

strtolower och encoding

6 juli, 2010

Ett problem som kan vara svårt att hitta är hantering av strtolower och encoding. Under en tid har jag jobbat med ett projekt som till viss del ligger på en Windows-plattform vi har begränsad kontroll över. Ibland blir det problem när man ska göra jämörelser av textsträngar och vill använda strtolower. Eftersom ”Mattias” inte är samma sak som ”mattias” vill man se till att båda värden man jämför bara innehåller gemener (eller versaler). Men strtolower() vill inte lira med å,ä,ö etc i UTF-8.

En lösning på problemet kan vara att ändra tecken till något annat – varför inte htmlentities(). Så här kan det se ut att förvandla ett värde till gemener och komma runt encoding problem:

1
2
3
$value = htmlentities($value, ENT_COMPAT, 'UTF-8');
$value = trim(strtolower($value));
$value = html_entity_decode($value, ENT_COMPAT, 'UTF-8');

En annan lösning är mb_strtolower() om den funktionen finns tillgänlig.

WordPress 3 med menyer

29 maj, 2010

Jag har börjat testa WordPress 3.0 RC-1, det vill säga ”release candidate”. En stor nyhet är menyer som hanteras dynamiskt i administrationen, något som kommer göra det till ett mycket trevligare CMS. Jag har inte provat dem i något layout-tema ännu, men vid en första anblick ser det mycket lovande ut! :) Uppgraderingen verkar gått utan problem där jag provat.

PHP länktips vecka 13

30 mars, 2010

Några PHP länkar för vecka 13. Det är fantastiskt så mycket som redan finns gjort om man söker.

Att skriva plugins är bra marknadsföring

17 mars, 2010

Jag har upptäckt att skriva plugins är bra marknadsföring. Populära applikationer som WordPress har så många användare, och ger man dem något gratis får man trafik tillbaka. Mitt eget WordPress plugin, Random Post Box (på WordPress, och på OpenSourceEditor) gav snabbt en rejäl trafikökning. Efter några dagar när länken inte var bland nya plugins på WordPress.org så gick trafiken ned något men håller ändå en stadig ström och ger kommentarer.

Chive – ett modernt alternativ till phpMyAdmin

12 mars, 2010

Jag har testat ett nytt gränssnitt till MySQL. Det heter Chive, ett modernt alternativ till phpMyAdmin. Det var rejält uppfriskande måste jag säga, ett webbgränssnitt enkelt att installera, relativt (för att vara db gränssnitt) intiutivt. Det har dock bara gått någon dag med Chive efter många år med phpMyAdmin, så jag har inte bestämt mig för att byta ut det gamla helt än. Men Chive är absolut värt att prova.

Vanliga fel att se upp med

11 mars, 2010

Den senaste tiden har jag diskuterat med mina kollegor om det vanligaste PHP-felet att se upp med. Vi är överens om ett av de mest irriterande, ett glömt likamed tecken i en if-sats.

När man jämför två värden i PHP kan man använda dubba lika-med tecken, så här:

1
2
3
if ($mittnamn == 'Mattias') {
	echo 'Hello Mattias';
}

När man tilldelar värden till variabler används ett lika-med tecken:

1
$mittnamn = 'Mattias';

Tänk dig då vad som händer med den här koden:

1
2
3
if ($mittnamn = 'Mattias') {
	echo 'Hello Mattias';
}

Den jämför inte värden, den testar om det går att tilldela $mittnamn värdet ‘Mattias’. If-satsen som var till för kontrollera om variabeln $mittnamn har värdet ‘Mattias’ kommer nu alltid vara sant. Även om $mittnamn innehåller namnet ‘Vera’ kommer ‘Hello Mattias’ skrivas ut.

Eftersom det är fullt möjligt att använda en if-sats på båda visen genereras inget felmeddelande. Och är man lite trött och stirrat sig blind på samma skript länge kan det vara väldigt svårt att hitta.

Nya kursstarter på php-kursen

8 mars, 2010

Trots stora snöhögar runt husknuten så närmar sig våren och den 6 april har vi en ny kursstart för php-kursen. En möjlighet för dig som vill vässa dina kunskaper under våren.

Om Twitter och PHP-prestanda hos Facebook

4 mars, 2010

Några länktips om hur du kan använda Twitter och vad Facebook har för PHP-kompilator.

Posta på Twitter med PHP
På kodkodkod.se (en blogg som jag tror blir intressant att följa) finns tips om hur du kan använda Twitter i dina skript. Ligger bra i tiden med tanke på att Twitter och social media blir viktigare och viktigare i marknadsföring.

PHP compiler performance
PHPclasses.org berättar om hur Facebook arbetar med prestanda i sina applikationer. Deras compiler HipHop finns att använda, det verkar av beskrivningen att döma dock inte vara världens lättaste uppgift ;)

Läs även andra bloggares åsikter om prestanda, twtter, curl, php

Glöm inte funktionerna i SQL

28 januari, 2010

Ibland känner jag att man glömmer funktionerna i SQL (den tekniken vi använder för kommunicerar med databasen). I mycket litteratur och annat jag ser lär man sig SELECT, INSERT, UPDATE och sedan inte mycket mer. Alla operationer görs sedan i PHP-koden. Men till exempel MySQL har många inbyggda funktioner, som kan vara snabbare att använda och som sparar mycket kod.

Jag råkade här om dagen på ett inlägg av David Walsh, ”MySQL’s REPLACE is PHP’s STR_REPLACE()”, där han ersätter text med MySQLs gunktion istället för PHPs. Senast idag kunde jag använt en när jag flytta en WordPress Mu blogg till en annan server och skulle ersätta alla sökvägar (men med backup först!)

1
UPDATE mytable SET content = REPLACE(content,'kurswebben.se','phpkurs.se');

Rädda MySQL

16 januari, 2010

Oracle köper Sun som äger MySQL. Behöver vi rädda MySQL? Man kan fråga sig vad Oracle har för intresse av att främja utveckling av MySQL. En webbplats har skapats tillägnad MySQLs fortlevnad, och där kan du skriva på en petition. Besannas farhågorna så kanske det är läge för PostgreSQL att växa.

Mer läsning om Oracle och MySQL:

Kod i WordPress

14 januari, 2010

Ibland lägger jag in kod i WordPress-inläggen här på bloggen. För att göra en ruta, färga koden och ev fixa radnummer använder jag tillägget WP-Syntax, som i sin tur använder sig av GeSHI (Generic Syntax Highlighter). Enkelt och smidigt, man använder pre-taggen…

<pre lang="php"> koden </pre>

Så här kan PHP se ut:

1
2
3
4
5
<?php 
function my_mirror($var) {
   echo strrev($var . ' bak o fram: ' . $var):
} 
 ?>

Eller kanske lite Ruby

18
19
20
21
22
class Example
  def example(arg1)
    return "Hello: " + arg1.to_s
  end
end

Språkstödet är omfattande.

Uttnyttja din PHP-editor fullt ut

12 januari, 2010

Du har massor att vinna på att uttnyttja din PHP-editor fullt ut. Min favorit för tillfället är Quanta Plus på Linux och Eclipse PDT på Win/Mac. Quanta har fördelen att den gör mycket lagom avancerat. Snippets (återanvändbara kodsnuttar) sparas som simpla .txt-filer, vilket gör dem lätt att överföra till andra platser och program. Dokumentationen går att ladda hem som HTML-filer och spara i rätt mapp så finns den tillgänglig i programmet. Det går att fälla ihop kodstycken, hantera projekt, söka och ersätta etc. Att den även är snabb skadar förstås inte! För riktigt snabba ändringar brukar jag ha enklare texteditorer – t.ex. gEdit på Linux, Smultron på Mac och Notepad++ på Windows.

Quanta Plus

Läs även andra bloggares åsikter om php-editor, mjukvara, linux, kod

Tvinga en bild att laddas om

9 januari, 2010

Jag jobbade här om dagen med bildbeskärning, och behövde tvinga en bild att laddas om istället för att hämtas från webbläsarens cache. De vanliga tricken med att sätta headers och meta-taggar användes i skriptet, men bilden ville ändå inte laddas om direkt. Lösningen är att lägga till ett slumpat tal som querystring i bildnamnet. För att enkelt få ut slumptal använder jag funktionen rand(). Kanske inte den snyggaste av lösningar, men den fungerar.

<img src="bild.jpg?<?php echo rand(1,3000); ?>" />

Webbläsaren noterar att det är annorlunda adress vid varje besök och laddar om bilden, men ignorerar delen efter ”?”.

Läs även andra bloggares åsikter om bildhantering, skript, php, cache

Ta ett extra steg med JQuery

9 december, 2009

Som webutvecklare och PHP-kodare är det kanske funktionaliteten bakom man börjar planera, men du kan ta ett extra steg med JQuery och göra nya saker möjliga. JQuery är ett javascript bibliotek som underlättar design och AJAX-funktioner. För många saker finns plugins och du behöver ofta bara några rader kod för mycket funktionalitet. Kombinera det med dina PHP-skript så kan du göra mycket.

Jag har tidigare jobbat mycket med webbgallerier, bilduppladdning etc. och tycker därför många av JQuerys bildfunktionerna verkar intressant. Här om dagen arbetade jag kort med JCrop som är ett plugin för att beskära bilder. Det naturliga är förstås att sedan spara bilden man beskurit, men för mitt test valde jag att skriva ut den direkti webbläsaren. Prova gärna att beskära mina blåsippor :) Mer exempel och instruktioner om hur du kan beskära bilder hittar du på JCrops hemsida.

Beskär bilder med JCrop

Beskär bilder med JCrop

Överta andras kod

2 december, 2009

Att överta andras kod är alltid en intressant uppgift. Vi tänker alla lite olika, har våra lösningar och egenheter. Du lär dig alltid något. Där finns alltid något att kämpa med, någon att svära över och någon aha-upplevelse. Det är ungefär som att lära känna människor.

Ett sätt är att börja där webbläsaren börjar och följa skriptets väg. Vad händer när index.php laddas? Följ ”stigen” och se vad som laddas, vilka funktioner som körs etc. Och hoppas på bra kommantarer ;)

Road to the lakes

Testa dig med fizzbuzz

30 november, 2009

Söker du jobb som webbprogrammerare – var beredd att testa dig med fizzbuzz. Visste du att många som söker programmeringsjobb inte kan koda alls? Kanske är det dags att börja posta lite utmaningar här ;) Ge mig ett svar på detta (via blogg eller kommentar):

  • Gör ett skript som skriver ut talen 1 till 100.
  • För varje tal delbart med 3 skriv ut ”fizz”.
  • För varje tal delbart med 5 skriv ut ”buzz”.
  • För varje heltal delbart med både 3 och 5 skriv ut ”fizzbuzz”.

fizbuzz

Ny design banar vägen

18 november, 2009

Du som varit inne här tidigare kanske noterar att vi har ny design. Den banar vägen för en hel del förändringar som dyker upp här varefter. Men först och främst ett ansiktslyft – jag hoppas det känns som en förbättring? :)

phputbildningsbloggen

Läs även andra bloggares åsikter om utbildning, php, blogg, wordpress, layout, design

Dela kod online med Codepad

12 oktober, 2009

Jag har hittat ett sätt att dela kod online, med Codepad.org – mycket bra om du snabbt vill visa för någon och få en kort adress. Min egen kodsnutt blev en kort bit från ett WordPress-tema, där jag hämtar en loop med poster för en andra listning (t.ex. om man hämtar inlägg till två kolumner). Codepad kan ta flera tekniker – C, Ruby, C++, Perl, Python m.fl. Den naturligaste för mig är förstås PHP ;)

Så här enkelt kan man dela kod online med Codepad. Jag fick förstås ett fel eftersom koden är tagen ur sitt sammanhang. En skärmdump…

share-php-with-codepad

Tack till Bengt för tipset.

Läs även andra bloggares åsikter om dela kod, webbtjänster, utveckling, programmering

Kod efter humör

10 oktober, 2009

Jag använder alltid kommentarer och följer phpDoc , men till vis del formas kod efter humör. När jag är mer stressad och har mycket att tänka på är jag också mer benägen att dela upp koden med tydliga block skiljda åt av tomma rader och t.ex. /***************

Ett exempel:

uppdelad-kod

Annars blir det mer kompakt. Egentligen tycker jag koden ska förklara sig själv men jag brukar följa upp med kommentarer i alla fall, dels för att följa phpDoc och kunna använda applikationen, men jag tycker också det är lite enklare att se koden i färgat skick om koden delas upp av kommentarernas färg. Det finns något för blicken att stanna upp vid.

Hur skriver du dina kommentarer?

kompakt-kod

Tips:
Sådana här saker är ett evigt diskussionsämne som kan rör upp oss nördar ;) Nedan hittar du några andras tankar om kommentering av koden. Söker du på forum eller Google Code Search hittar du säkert mycket mer.

Läsning