Det första som slog mig som en sekundär lösning var att plocka ut de parametrarna i img taggen som är intressanta och sedan bara stoppa in dom i en ny tillsammans med classparametern oavsett om den fanns från början eller inte.
Är kass på reguljära uttryck tyvärr =/
Jag skulle vilja kontrollera om en img-tagg har en class eller inte. Finns ingen class ska ska class läggas till. Exempel:
<p><img width="120" height="200" class="alignLeft" alt="bild1.jpg" src="bild1.jpg" />Text...<br />
<img width="120" height="200" alt="bild2.jpg" src="bild2.jpg" /></p>
I den första img-taggen finns redan class="alignLeft" och där ska alltså ingen class läggas till. I andra taggen saknas class och därför ska class läggas till där.
Med hjälp av nedanstående kod ersätts class="alignLeft" med class="noAlign":
$text = "<p><img width=\"120\" height=\"200\" class=\"alignLeft\" alt=\"bild1.jpg\" src=\"bild1.jpg\" />Text...<br /><img width=\"120\" height=\"200\" alt=\"bild2.jpg\" src=\"bild2.jpg\" /></p>";
$pattern = "/<img(.*?)(class=\".*?\")(.*?)\/>/";
$replacement = "<img$1class=\"noAlign\"$3 />";
$text = preg_replace($pattern, $replacement, $text);
Men det är inte så som det ska fungera. Har försökt att lösa det genom att sätta en negation (m h a "^" och klammrar) på class i $pattern men får det inte att fungera korrekt. Hur ser det reguljära uttrycket ut som löser det här?
För det ska väl gå att lösa det här med ett reguljärt uttryck? Om inte, finns det något annat smidigt sätt att lösa det på?