webForumDet fria alternativet

preg_replace hjälp...

3 svar · 431 visningar · startad av paddan

paddanMedlem sedan dec. 2002323 inlägg
#1

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

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2
$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.

paddanMedlem sedan dec. 2002323 inlägg
#3

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

The_HulkMedlem sedan juni 20031 937 inlägg
#4

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.

Genererad på 369 ms · cache AV · v20260730165559-full.f96bc7eb