Avatar billede 3xm Nybegynder
03. januar 2005 - 22:34 Der er 16 kommentarer og
1 løsning

preg_replace - få det til at virke?

jeg har aldrig været rigtig snedig til regexp, og jeg har et problem der længe har naget mig.

jeg kunne godt tænke mig at matche "<NOGET>" i teksten "vi spiser <laks> og det smager godt", så det bliver erstattet med værdien af variablen $fisk["NOGET"]

altså i dette tilfælde skulle det blive erstattet med værdien af $fisk["laks"]

her er et eksempel:

<?php
$fisk["laks"] = "hurra";

echo preg_replace("/<([0-9a-zA-Z]+)>/", "$1", "vi spiser <laks> og det smager godt");

echo preg_replace("/<([0-9a-zA-Z]+)>/", $fisk["$1"], "vi spiser <laks> og det smager godt");

echo preg_replace("/<([0-9a-zA-Z]+)>/", strtoupper("$1"), "vi spiser <laks> og det smager godt");
?>

den første giver som forventet "vi spiser laks og det smager godt", den anden giver kun "vi spiser  og det smager godt" og den tredje giver "vi spiser laks og det smager godt" selvom jeg skulle mene at den skulle give "vi spiser LAKS og det smager godt".

hvad gør jeg galt? hvor har misforstået noget?
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 22:39 #1
læs om    /  /e  option på et preg-udtryk
Avatar billede 3xm Nybegynder
03. januar 2005 - 22:42 #2
okay. du har vel ikke et link til en herlig informationskilde?

=)
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 22:43 #3
php.net
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 22:44 #4
Du kan også få et eksempel:

echo preg_replace('/<([0-9a-zA-Z]+)>/e', 'strtoupper("$1")', 'vi spiser <laks> og det smager godt');
Avatar billede 3xm Nybegynder
03. januar 2005 - 22:47 #5
har ledt og ledt på php.net, men ikke rigtigt kunnet finde noget. men det er jo smart det der. hvad betyder det e helt præcist?

i hvert fald tak for det. smid et svar.

=)
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 22:48 #6
Det er nu meget nemt at finde: http://dk.php.net/manual/da/reference.pcre.pattern.modifiers.php
Jeg samler ikke på point, tak.
Avatar billede 3xm Nybegynder
03. januar 2005 - 22:53 #7
hmm... kan du også lave et eksempel hvor den gør det med at tage en værdi fra array'et?

=)
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 22:55 #8
Det er godt nok nogle svære opgaver du stiller mig ;)  Prøv bare med:

....'$fisk["$1"]'....
Avatar billede 3xm Nybegynder
03. januar 2005 - 22:56 #9
det er sikkert nemt at finde hvis man ved hvad man leder efter. som sagt er jeg ikke så hård til den slags her, så var ret lost. jamen så må jeg jo selv beholde pointene.

=)
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 22:58 #10
Og så et almindeligt råd: hvis din beregning er bare en smule kompliceret i en /.../e
laver du en funktion og kalder den. Ellers ryger overblikket med det samme.
Avatar billede 3xm Nybegynder
03. januar 2005 - 22:58 #11
hehe... jojo, men nu vil jeg af princip gerne bruge " i stedet for '. desuden kan jeg ikke få det til at virke med '$fisk["$1"]'

på forhånd undskyld.

=)
Avatar billede 3xm Nybegynder
03. januar 2005 - 22:59 #12
bare rolig. det ER i funktioner det hele. det er kun et test-eksempel det her.

=)
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 23:01 #13
Du skal ikke bruge "..." med mindre du skal have erstattet nogle $variabler.
Den her skulle gerne virke:

$fisk["laks"] = "hurra";
echo preg_replace('/<([0-9a-zA-Z]+)>/e', 'strtoupper("$1")', 'vi spiser <laks> og det smager godt');
print "\n";
echo preg_replace('/<([0-9a-zA-Z]+)>/e', '$fisk["$1"]', 'vi spiser <laks> og det smager godt');
Avatar billede 3xm Nybegynder
03. januar 2005 - 23:10 #14
hahaha! flot, mikkel.

ja, jeg havde selvfølgelig glemt at definere de variabler jeg prøver at få den til at erstatte det med. så er det klart et ikke virker.

undskyld at det trak helt herud. nu virker det. tusind tak.

=)
Avatar billede 3xm Nybegynder
03. januar 2005 - 23:12 #15
...
Avatar billede erikjacobsen Ekspert
03. januar 2005 - 23:13 #16
Så længe jeg svarer dig er det ikke trukket for længe ud....
Avatar billede 3xm Nybegynder
03. januar 2005 - 23:16 #17
haha! fint nok. godt nytår.

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