preg_replace og xhtml-validering
For at xhtml skal validere, skal alle instanser af & konverteres til &. Men da jeg hiver indholdet ud af en database er nogle dele allerede html-formateret, det vil f.eks. sige at æ er æ og deslige. Summa summarum er at jeg kun vil erstatte ampersands i a-tagget href-attribut.Derfor her jeg forsøgt mig med følgende kode:
$input = preg_replace("{\[url\](.*?)\[/url\]}", "<a href='\\1'>\\1</a>",$input);
$input = preg_replace("{\[url=(.*?)\](.*?)\[/url\]}", "<a href='\\1' title='\\1'>\\2</a>",$input);
$input = preg_replace("{(<a href='.*)&(.*>)}", "\\1&\\2", $input);
Problemet er bare at den ikke virker efter hensigten, & bliver ikke konverteret.
Formålet med den sidste linje er altså at "&"-tegn i href-attributten bliver konverteret til &, men også kun dem.