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>