Övningar med CTextFilter
PHP-klassen CTextFilter är en klass som hjälper dig att skriva texter på ett effektivt sätt för webben. Klassen erbjuder ett antal metoder som du kan använda för att formatera dina texter, även utan att skriva ren HTML-kod.
I denna övning kommer du igång med att använda klassen och du får förståelse för vad formatering av texter innebär och hur det går till.
#Förkunskaper
Du bör ha gjort, eller ha förkunskaper som motsvarar, artikeln “Lagra innehåll i databas för webbsidor och bloggposter”.
Om du vill ha förklaringar, tips och ledtrådar så finner du dem i nämnda artikel.
#Förberedelser
Det finns två sätt att komma igång med CTextFilter
, läs igenom båda och välj sedan en väg.
#Alternativ 1
Ta de olika bitarna och sätt samman.
Hämta hem och spara källkoden till klassen CTextFilter
.
Klona PHP-Markdown i samma katalog som du sparade CTextFilter.php
.
$ git clone https://github.com/michelf/php-markdown.git
Det finns en sidkontroller som visar hur du använder koden. Hämta hem den, spara, modifiera koden till din omgivning och öppna den sedan i en webbläsare för att testköra.
#Alternativ 2
Klona Anax-oophp, inklusive submoduler.
git clone --recursive https://github.com/mosbth/Anax-oophp.git
Öppna sedan filen webroot/textfilter.php
i din webbläsare.
#Testa
Du kan testa exempelkoden här, så ser du hur det skall se ut när det fungerar.
#Integrera med ditt Anax
Integrera CTextFilter
i din Anax och skapa en sidkontroller testfilter.php
, för att komma igång snabbt så kan din testfilter.php
vara en kopia av den textfilter.php
som du precis testat.
Det finns så kallade doc-comments till varje metod i CTextFilter
. När du ska läsa på vad en av dessa metoder gör, så läs alltid först och främst denna kommentar till metoden som beskriver vad den gör.
Övningarna kommer inte att gå genom shortCode(), då det inte behövs eller ingår i kursmomentet.
#Övningar
#1. CTextFilter::bbcode2html()
Läs på om vad BBCode är och hur man skriver det.
Läs på vad metoden
CTextFilter::bbcode2html()
gör. Läsa ut vilka sorters BBCode den kan hantera.I
testfilter.php
, lägg i variablen$bbcodetest
en text som innehåller minst en typ av BBCode som du vetCTextFilter
kan hantera.Använd
bbcode2html()
på$bbcodetest
och lägg till resultatet på mallens main (t.ex$anax["main"]
).Vad blir resultatet i form av HTML för det textstycke du filtrerade med BBCode? Studera hur respektive BBCode blir till HTML.
#2. CTextFilter::makeClickable()
Läs kort över vad
CTextFilter::makeClickable()
gör (läs dess doc-kommentar).I
testfilter.php
, lägg i variablen$linktest
en text som innehåller minst en URL.Använd
makeClickable()
på$linktest
och lägg till resultatet på mallens main (t.ex$anax["main"]
).Vad blir resultatet i form av HTML för det textstycke du filtrerade med
makeClickable
? Studera hur respektive sträng blir till en HTML-länk.
#3. CTextFilter::nl2br()
Läs på om vad
nl2br()
gör i PHP.Läs om vad
CTextFilter::nl2br()
gör.I
testfilter.php
, lägg i variablen$newlinetest
en text som innehåller minst tre nya rader.Använd
CTextFilter::nl2br()
på$newlinetest
och lägg till resultatet på mallens main (t.ex$anax["main"]
).Vad blir resultatet i form av HTML för det textstycke du filtrerade med nl2br? Studera hur HTML-koden skiljer sig från ursprungstexten.
#4. CTextFilter::markdown()
Läs på om vad Markdown är och hur det skrivs.
I
testfilter.php
, lägg i variablen$markdowntest
en text som innehåller två olika headers och en mening med ett ord i fetstil.Använd
CTextFilter::markdown()
på$markdowntest
och lägg till resultatet på mallens main (t.ex$anax["main"]
).Vad blir resultatet i form av HTML för det textstycke du filtrerade med markdown? Studera hur HTML-koden skiljer sig från ursprungstexten.
Not. Denna – och alla andra artiklar på dbwebb.se – är skrivna i Markdown.
#5. CTextFilter::doFilter()
Läs kort över vad
CTextFilter::doFilter()
gör.Vilka filter finns tillgängliga att ange?
Använd
CTextFilter::doFilter()
och använd filtret “markdown” på texten i$markdowntest
och lägg till resultatet på mallens main (t.ex$anax["main"]
).Vilket filter har alltså applicerats på texten, nu via
doFilter()
?
#6. Multipla filter med CTextFilter::doFilter()
Gå till koden för
CTextFilter::doFilter()
. Hur kan man ange flera filter?I
testfilter.php
, lägg i variabeln$filtertest
en mening som innehåller både markdown och en URL.Använd
CTextFilter::doFilter()
och använd filtret “markdown,clickable” på texten i$filtertest
och lägg till resultatet på mallens main (t.ex$anax["main"]
).Vilka filter har alltså applicerats på texten, via
doFilter()
?
#Extrauppgift
Träna upp din potential som programmerare i öppen källkod genom att leta buggar eller hitta förbättringspotential i klassen
CTextFilter
? Skapa en issue på repot på GitHub och föreslå förbättringar.Kan du genom att studera koden få kläm på hur shortcoden för figure fungerar?
Bygg ut klassen
CTextFilter
och lägg till filtret som beskrivs i tipset “Förbättra ditt skrivande på webben med ett PHP-bibliotek för typografi”.Bygg ut klassen
CTextFilter
och använd HTMLPurifier som ett filter för att filtrera och säkra upp HTML-koden.
#Tips från coachen
Lycka till och hojta till i forumet om du behöver hjälp!
#Revision history
- 2015-04-13: (C, mos) la till git framför clone på alternativ 1.
- 2015-01-13: (B, mos) Flyttad från textdokument till dbwebb.
- 2014-12-04: (A, jane) Skapad för campus oophp.