Övningar med CTextFilter

By sylvanas. Latest revision .

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()

  1. Läs på om vad BBCode är och hur man skriver det.

  2. Läs på vad metoden CTextFilter::bbcode2html() gör. Läsa ut vilka sorters BBCode den kan hantera.

  3. I testfilter.php, lägg i variablen $bbcodetest en text som innehåller minst en typ av BBCode som du vet CTextFilter kan hantera.

  4. Använd bbcode2html()$bbcodetest och lägg till resultatet på mallens main (t.ex $anax["main"]).

  5. 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()

  1. Läs om makeClickable och dess syfte.

  2. Läs kort över vad CTextFilter::makeClickable() gör (läs dess doc-kommentar).

  3. I testfilter.php, lägg i variablen $linktest en text som innehåller minst en URL.

  4. Använd makeClickable()$linktest och lägg till resultatet på mallens main (t.ex $anax["main"]).

  5. 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()

  1. Läs på om vad nl2br() gör i PHP.

  2. Läs om vad CTextFilter::nl2br() gör.

  3. I testfilter.php, lägg i variablen $newlinetest en text som innehåller minst tre nya rader.

  4. Använd CTextFilter::nl2br()$newlinetest och lägg till resultatet på mallens main (t.ex $anax["main"]).

  5. 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()

  1. Läs på om vad Markdown är och hur det skrivs.

  2. I testfilter.php, lägg i variablen $markdowntest en text som innehåller två olika headers och en mening med ett ord i fetstil.

  3. Använd CTextFilter::markdown()$markdowntest och lägg till resultatet på mallens main (t.ex $anax["main"]).

  4. 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()

  1. Läs kort över vad CTextFilter::doFilter() gör.

  2. Vilka filter finns tillgängliga att ange?

  3. 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"]).

  4. Vilket filter har alltså applicerats på texten, nu via doFilter()?

#6. Multipla filter med CTextFilter::doFilter()

  1. Gå till koden för CTextFilter::doFilter(). Hur kan man ange flera filter?

  2. I testfilter.php, lägg i variabeln $filtertest en mening som innehåller både markdown och en URL.

  3. 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"]).

  4. Vilka filter har alltså applicerats på texten, via doFilter()?

#Extrauppgift

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

  2. Kan du genom att studera koden få kläm på hur shortcoden för figure fungerar?

  3. 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”.

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

Document source.

Category: php.