Avatar billede mejer140 Nybegynder
28. februar 2009 - 20:39 Der er 6 kommentarer og
1 løsning

Return fra preg_replace

Jeg har et problem med at kunne genkende et %-tegn, når jeg bruger en funktion inde i preg_replace. Min kode står nedenfor, og sizeden() returnerer ikke "Procenttegn fundet". Nogen der kan hjælpe mig?

function sizeden($width) {
if (preg_match("/%/",$width)) {
    $returner = "Procenttegn fundet";
}
return $returner;
}

$tekst = "[rep]100%[/rep]";

$tekst = preg_replace("/\[rep\]([^[]+)\[\/rep\]/","".sizeden('\\1')."",$tekst);
Avatar billede olebole Juniormester
28. februar 2009 - 21:05 #1
<ole>

Vi har da vist før talt om fejlmeldinger:
    http://dk2.php.net/manual/en/function.error-reporting.php

Du kan ikke bruge en funktion i preg_replace:
    http://dk2.php.net/manual/en/function.preg-replace.php

Du skal nok bruge:
    http://dk2.php.net/manual/en/function.preg-replace-callback.php

/mvh
</bole>
Avatar billede mejer140 Nybegynder
28. februar 2009 - 21:11 #2
Jeg får ingen fejlmeldinger, selvom det er slået til.
Og hvis jeg i funktionen i stedet skriver "return $width;", fungerer det fint, så den returnerer "100%", så derfor tænker jeg, at det jo må virke at bruge en funktion i preg_replace?

function sizeden($width) {
if (preg_match("/%/",$width)) {
    $returner = "Procenttegn fundet";
}
return $width;
}

$tekst = "[rep]100%[/rep]";

$tekst = preg_replace("/\[rep\]([^[]+)\[\/rep\]/","".sizeden('\\1')."",$tekst);

// Returnerer 100%, når jeg afprøver det.
Avatar billede erikjacobsen Ekspert
28. februar 2009 - 23:23 #3
Kig på den funktion Ole nævner. Hvis man ikke er bange for brugerinput, så kan man nedenstående, men lad være hvis dine tekststrenge ikke er kendte:

function sizeden($width) {

if (preg_match("/%/",$width)) {
    return "Procenttegn fundet";
}
return $width;
}

$tekst = "[rep]100%[/rep]";

$tekst = preg_replace("/\[rep\]([^[]+)\[\/rep\]/e","sizeden('\\1')",$tekst);
Avatar billede mejer140 Nybegynder
01. marts 2009 - 10:06 #4
Ja okay, jeg kan godt se, at det nok er den jeg skal have gang i. Men så kommer problemet med, at jeg har brug for flere parametre i min funktion, så jeg både skal bruge \\1,\\2 osv. Men jeg har fået den hjælp, jeg havde brug for.

I må gerne begge oprette et svar, så får I point. Tak for hjælpen.
Avatar billede erikjacobsen Ekspert
01. marts 2009 - 10:21 #5
Ingen point til mig, tak.
Avatar billede olebole Juniormester
01. marts 2009 - 14:25 #6
Et svar herfra  =)
Avatar billede olebole Juniormester
02. marts 2009 - 10:25 #7
Tak for points  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester