Zaczynamy zabawy z wyrażeniami regularnymi. Będą nam one niezbędne do ukończenia projektu framework MVC. Do dzieła.

Zaczniemy od napisania klasy SingleTagParser:

<?php 
class SingleTagParser {
    public static function br2br($text){
        return preg_replace('/\[\/br\]/', "</br>", $text);
    }
}

Metoda br2br nawiązuje do nazwy wbudowanej w PHP funkcji nl2br. Zobaczmy, jak ona działa:

class SingleTagParser {
    public static function br2br($text){
        return preg_replace('/\[\/br\]/', "</br>", $text);
    }
}
echo htmlspecialchars(SingleTagParser::br2br("this is [/br] text [/br] asdsad"));
//this is </br> text </br> asdsad

Wystarczy „zdjąć” htmlspecialchars a zobaczymy HTML, jaki chcemy. Zróbmy tak, aby ten znak „/” był opcjonalny:

class SingleTagParser {
    public static function br2br($text){
        return preg_replace('/\[\/?br\]/', "</br>", $text);
    }
}
echo htmlspecialchars(SingleTagParser::br2br("this is [/br] text [br] asdsad"));
//this is </br> text </br> asdsad

Flaga „?” oznacza, że znak „/” może wystąpić 0 lub 1 raz. Jak widać działa.

Dodajmy jeszcze metodę hr2hr:

class SingleTagParser {
    public static function br2br($text){
        return preg_replace('/\[\/?br\]/', "</br>", $text);
    }

    public static function hr2hr($text){
        return preg_replace('/\[\/?hr\]/', "<hr>", $text);
    }
}
echo htmlspecialchars(SingleTagParser::hr2hr("<h1>Blabla</h1>[/hr]<h2>Bla</h2>[hr]"));
// <h1>Blabla</h1>
// <hr>
// <h2>Bla</h2>
// <hr>