Gedankenquerbeet
Vor 2 Jahren

Tags innerhalb <code> Block ignorieren

HTML Tags zulassen, aber in code Block ignorieren

Einen Blog zu entwickeln, in welchem HTML Tags in Artikel verwendet werden können, ist nicht schwierig. Problematisch wird es aber, wenn man Artikel über oder mit lesbaren HTML Tags verfassen möchte.

<div>Das wäre nicht möglich</div>
<p>Die Tags </p> und <p> wären normalerweise nicht "sichtbar"</p>


Um es zu ermöglichen, dass die Tags in code Blöcken ignoriert werden, wird folgende PHP Funktion benötigt:

function checkCodeBlocks($str) 
{
      $regex = '#<\s*?code\b[^>]*>(.*?)]*>#s';
      preg_match_all($regex, $str, $matches);
        
      foreach($matches[1] as $r)
      {
          $str = str_replace($r, htmlentities($r, ENT_SUBSTITUTE), $str);
      }
      
      return $str;
}


Der oben verwendete Regex sucht nach allen HTML Tags, welche in code Blöcken vorkommen. Danach werden alle Funde durchgegangen und Zeichen wie < oder > mit htmlentities in die passenden HTML Entitäten umgewandelt. Anschließend wird die bearbeitete Zeichenkette zurückgegeben.


Das war es schon. Jetzt ruft man nur noch die Funktion an der Stelle auf, an der man sie benötigt, z.B bei einer PDO MySQL Abfrage.

$query->bindValue(1, checkCodeBlocks($text), PDO::PARAM_STR);
Kommentar verfassen



Tags ignorieren Inhalt nicht parsen Code Block Inhalt ignorieren Html Tags ignorieren < und > Zeichen umwandeln