Wo anfangen, wo aufhören? Denn Du ersetzt mit dem Parser Text1 durch Text2. Zum Validieren muss man wissen, welcher Code fehlerhaft ist, und wie er korrekt lauten sollte. Dazu helfen die Tools von w3c.
Einzige Überlegung:
Text1 sollte so gewählt werden, dass auf der gesamten Seite nur die zu korrigierenden Stellen gefunden werden.
Beispiel:
143: <td><img src="blablab 1.jpg" wdith="500" border="0"></td>
157: <td><img src="blablab 2.jpg width="500" border="0"></img></td>
Erklärung:
Wenn Du nun width=\"500\" border=\"0\"> durch width="500"></img> ersetzt, dann ersetzt Du nicht nur in Zeile 143 sondern auch in Zeile 157 den Text, was in Zeile 157 zu zweimal </img> führt:
157: <td><img src="blablab 2.jpg" width="500" border="0"></img></img></td>
Also wäre es geschickt für den Tausch:
wdith=\"500\" border=\"0\"></td> durch width="500"></img></td> zu ersetzen, weil dieser Suchstring (zu ersetzende Text) eben nur in Zeile 143 vorkommt und nicht in Zeile 157. Hätte 157 einen eigenen anderen Fehler muss der mit einem eigenen Ersetzen Befehl eigens nachgearbeitet werden. Also wählt man Suchstrings (zu ersetzende Teile) so, dass die unterschiedlichen Namen bei Bildern usw. nicht enthalten sind, und die gleichen Fehlerstellen aber gefunden und korrigiert werden.
Kommt an 100 stellen eine <br> vor, kann ich es mit einer Suche-Ersetz-Funktion 100x mit replace("<br>","<br />",$content); ersetzen. Einmal Suchen = 100x Finden. D.h. ich sollte den Suchstring so aufbauen, dass der gleiche Fehler an allen Stellen gleichzeitig gefunden wird, also die unterschiedlichen Teile weglassen, aber möglichst vieles dazupacken, damit ich nicht andere Stellen kaputt mache:
<img src="meinbild.jpg" class="sidebar" border="1px"><br>
<img src="meinbild2.jpg" class="sidebar" border="1px"><br>
<img src="meinbild3.jpg" class="sidebar" border="1px"><br>
<hr class="sidebar" border="1px"><br>
Nun kann ich mit einem Suchstring class="sidebar" border="1px"> und der Ersetzung class="sidebar" border="1px"></img> zwar 3 Zeilen reparieren, aber weil ich dann auch in der letzte Zeile ersetze, generiere ich einen neuen Fehler:<hr class="sidebar" border="1px"></img><br>. Obwohl das ein neuer Fehler ist, ist aber der Vorteil, dass ich mit dem einen Befehl, schon drei Bilder korrigiert habe, und das ist effizient und sollte ich so machen. Also setzte ich dann eine weitere Zeile in den Parser (danach) um den neu entstandenen Fehler wieder zurück zu korrigieren: <hr class="sidebar" border="1px"></img><br> wird zu <hr class="sidebar" border="1px"><br>. Zwei Befehle sind ja besser als drei Anweisungen zu schreiben.
Man kann den Suchstring aber mit PHP viel komplexer aufbauen und nicht nur sagen "Suche diesen Text", sondern nach "Pattern" also Suchmustern suchen: Ich ersetze alle zweistellen Zahlen nach "width:" und vor "px" mit einer Zahl die um 2 größer ist, als dort steht.
Sonderzeichen:
Im PHP-Text gibt es nur ein Sonderzeichen, das ist das Anführungszeichen, weil dort weiss dann PHP, wo der Suchstring endet und der nächste Paramater, der Ersetzstring dann beginnt. Kommt ein Anführungszeichen im text vor, muss es durch ein "\" entwertet werden. Das sagt PHP das nächste ANrühfungszeichen ist ein Zeichen im Text, und nicht das Ende von dem Suchstring. Du Arbeitest scheinbar mit den einfachen Anführungszeichen, das mache ich nie, einfache Zeichen sind für mich JAVA-Stil. Ich entwerde das einzige Sonderzeichen mit "\".
Alle anderen Sonderzeichen sollten genau geschrieben werden wie in HTML gefordert. Man kann aber sicherheitshalber das machen:
str_replace("ü","ü",$content);
str_replace("ä","ä",$content);
usw.