---
title: "Negation och preg_replace"
type: "forum-thread"
url: "https://www.webforum.nu/amne/webbutveckling/136308-negation-och-preg-replace"
topic: "Webbutveckling"
topic_url: "https://www.webforum.nu/amne/webbutveckling"
author: "henke"
published: "2005-10-24T14:19:11.000Z"
updated: "2005-10-25T11:28:34.000Z"
replies: 4
views: 310
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/webbutveckling/136308-negation-och-preg-replace"
---

# Negation och preg_replace

## #1 — henke, 2005-10-24T14:19Z

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":

```php
$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å?

Permalänk: https://www.webforum.nu/p/136308

## #2 — Duffer, 2005-10-24T20:14Z

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 =/

Permalänk: https://www.webforum.nu/p/1694551

## #3 — Niklasson, 2005-10-25T06:13Z

Flyttas från PHP..

Permalänk: https://www.webforum.nu/p/1694626

## #4 — Peter S, 2005-10-25T10:52Z

Testa

```php
/**/

preg_replace('/(<img)((?:\s+(?:height|width|src|title|border|style|alt|id|hspace|ismap|longdesc|usemap|vspace|title|lang|xml:lang|on[a-z]+)="[^"]*?")*?)((?:\s*\/)?>)/im','\\1\\2 class="noAlign"\\3', stripslashes($text));

/**/
```

Notera de ovälkomna blankstegen i *hspace*; de skall ej vara där.

Permalänk: https://www.webforum.nu/p/1694726

## #5 — henke, 2005-10-25T11:28Z

Peter S, mycket stort tack! :) (y)

Permalänk: https://www.webforum.nu/p/1694735

---

Tråden på webben: https://www.webforum.nu/amne/webbutveckling/136308-negation-och-preg-replace
