---
title: "Warning: preg_replace(): Delimiter must not be alphanumeric or backslash"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/138536-warning-preg-replace-delimiter-must-not-be-alphanumeric-or-backslash"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "nordan"
published: "2005-11-30T18:49:34.000Z"
updated: "2005-11-30T21:25:13.000Z"
replies: 3
views: 447
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/php/138536-warning-preg-replace-delimiter-must-not-be-alphanumeric-or-backslash"
---

# Warning: preg_replace(): Delimiter must not be alphanumeric or backslash

## #1 — nordan, 2005-11-30T18:49Z

Hur skall jag göra för att få denna kod nedan att funka?
Jag får detta felmeddelande när jag kör den
Warning: preg_replace(): Delimiter must not be alphanumeric or backslash
Är det så att jag lägger till / på orden som skall matchas så funkar det men då byter den ju ut så att det skrivs ut på detta sätt /vad/ 
Någon som kan förklara vad det är för fel jag har gjort?

```php
$varde = array();
$replacement = array();

$string = "vad är detta? detta är strängen vars vissa ord skall bytas ut";
$word[] = "vad";
$word[] = "skall"; 

foreach ($word as $nyckel => $varde) 
{
 $replacement[] = '<b>'.$varde.'</b>';
  echo $replacement[$nyckel];
}
 echo preg_replace($word,$replacement,$string);
```

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

## #2 — Matte, 2005-11-30T20:41Z

Du måste ha en begränsare runt ditt reguljära uttryck.

Testa det här:

```php
$string = "vad är detta? detta är strängen vars vissa ord skall bytas ut"; 
$word[] = "vad"; 
$word[] = "skall"; 

foreach ($word as $key => $val) {
   $word[$key] = preg_quote($val);
}

$words = implode("|", $word);

echo preg_replace("/($words)/i", "<b>$1</b>",$string);
```

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

## #3 — nordan, 2005-11-30T21:13Z

Tack så mycket det funka bra.

Men eftersom jag vill lära mig mera om detta så måste jag fråga detta.

Varför använder du preg_quote($val); & $words = implode("\|", $word); 
Det funkar ju utan :-)

Jag vill bara veta varför så att jag lär mig mera för svaret på frågan har jag fått :-)

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

## #4 — Melea, 2005-11-30T21:25Z

[preg_quote()](http://www.php.net/preg_quote) tar och backslashar alla tecken som kan användas i ett reguljärt uttryck. Om du t.ex. hade haft en punkt  i $string så hade uttrycket antagligen krackat ihop. :)

[implode()](http://www.php.net/implode) lägger till \| efter varje ord i $string. Ett \|-tecken är samma sak som OR eller \|\| (i ett reguljärt uttryck), det separerar alla orden i uttrycket och kollar om något av dessa matchar $word.

Rätta mig gärna om jag har fel.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/138536-warning-preg-replace-delimiter-must-not-be-alphanumeric-or-backslash
