---
title: "preg_replace hjälp..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/180129-preg-replace-hjälp"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "paddan"
published: "2009-09-07T11:45:57.000Z"
updated: "2009-09-08T12:11:55.000Z"
replies: 3
views: 444
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/180129-preg-replace-hjälp"
---

# preg_replace hjälp...

## #1 — paddan, 2009-09-07T11:45Z

Hej,
Finns där någon vänlig själ som kanske kan hjälpa mig med detta?

Behöver köra preg_replace på en sträng och hämta replacement från en funktion. 
Nåt sånt här...

$pattern = "\[gallery(0,9)\]";
$str=  preg_replace($pattern, get_images($1), $str);

Det ska alltså letas efter tex "\[gallery2\]" men 2 är så klart ett nummer mellan 0-xxxxxx

Någon som har en ide?

/M

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

## #2 — nitro2k01, 2009-09-07T12:01Z

```
$pattern = '/\[gallery(\d+)\]/e';
$str= preg_replace($pattern, 'get_images($1)', $str);
```

Notera att jag använder enkelcitat för strängar. Detta gör escapen mer tydlig. (Man behöver inte hålla på med dubbla **\\**) **\[** och **\]** är reservade tecken, så de måste alltså föregås med **\\** (Sk escape) Hade man använt dubbelcitat för strängarna skulle man fått ha två **\\** \- först ett för tolkningen av det andra **\\** i strängen, sedan ett som hamnar i uttrycket.
 **(** och **)** ringar in resultatet
**\\d** söker efter en siffra. 
**\+** gör att sökningen efter en siffra upprepas så att du kan matcha en elelr flera nuffror.
**/** och **/** omsluter hela uttrycket. **e** talar om för **preg_replace** att ersättningsträngen innehåller kod. Notera att koden ligger i en sträng. **$1** infogar matchningen. 

Skulle du någon gång behöva infoga en sträng istället för ett nummet till ett e-uttryck, så måste du infoga citat-tecken precis som om du skrev in en sträng varsomhelst annars - **$1** infogar bara strängen rakt av. Dock escape'as eventuella enkel- och dubbelcitat i matchningen innan den infogas. Jag kan förklara det där närmare någon annan gång om det behövs.

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

## #3 — paddan, 2009-09-08T10:27Z

Tack för hjälpen. Funkade klockrent.
Infon uppskattades också...
/M

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

## #4 — The_Hulk, 2009-09-08T12:11Z

Om du har fått svar på din fråga så acceptera gärna svaret så att man lätt kan se att tråden är löst.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/180129-preg-replace-hjälp
