Avatar billede berglund Nybegynder
15. april 2002 - 23:10 Der er 13 kommentarer og
1 løsning

preg_replace. HJÆLP!

Hej alle!

Er der nogen der kan hjælpe mig med følgende:

Jeg har en tekst a la:

<!-- xxx -->
Et eller andet
<!-- yyy -->

Som jeg ønsker at skifte ud med:
<!-- xxx -->
Noget meget mere interessant
<!-- yyy -->

Jeg er klar over at jeg skal bruge funktionen:
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

Men kan i øvrigt ikke få det til at virke. Hvad gør jeg?

Mvh. Thomas
Avatar billede erikjacobsen Ekspert
15. april 2002 - 23:19 #1
Utestet

$txt = eregi_replace("<!--xxx-->(.*?)<!--yyy-->","<!--xxx-->$mere<!--yyy-->".$txt);
Avatar billede erikjacobsen Ekspert
15. april 2002 - 23:19 #2
$mere="Noget mere inteessant";
$txt = eregi_replace("<!--xxx-->(.*?)<!--yyy-->","<!--xxx-->$mere<!--yyy-->",$txt);
Avatar billede delwin Nybegynder
15. april 2002 - 23:22 #3
hvis det er dit mål, hvorfor så ikke bare gøre det manuelt..

$string = "<!--xxx-->Et eller andet<!--yyy-->";
$nystring = "<!--xxx-->Noget mere interessant<!--yyy-->";

det virker ikke rigtig som noget du skal bruge regex til..
Avatar billede berglund Nybegynder
15. april 2002 - 23:24 #4
Jeg får fejlen:
"REG_BADRPT:repetition-operator operand invalid".
Kan du ændre det?

Tak!
Avatar billede erikjacobsen Ekspert
15. april 2002 - 23:26 #5
Ah, ja, det er spørgsmålstegnet - den ikkegrådige metode er kun i preg-rene.
prøv:
$txt = pregi_replace("/<!--xxx-->(.*?)<!--yyy-->/i","<!--xxx-->$mere<!--yyy-->",$txt);
Avatar billede erikjacobsen Ekspert
15. april 2002 - 23:26 #6
Sørry:  preg_replace ... :)
Avatar billede berglund Nybegynder
15. april 2002 - 23:31 #7
Det virker som om der mangler noget en mulitline multiplier. Hvordan er det nu?
Avatar billede erikjacobsen Ekspert
15. april 2002 - 23:32 #8
$txt = pregi_replace("/<!--xxx-->(.*?)<!--yyy-->/im","<!--xxx-->$mere<!--yyy-->",$txt);
Avatar billede berglund Nybegynder
15. april 2002 - 23:37 #9
Jeg er bange for at den ikke kan finde ud af det på denne måde. Den genkender ikke mønstret.
Avatar billede berglund Nybegynder
15. april 2002 - 23:42 #10
Hvad betyder modifier "i", og mangler der ikke en "s" modifier?
Avatar billede erikjacobsen Ekspert
15. april 2002 - 23:45 #11
Jo, hvis det står på flere linier skal du have s med. i er "ignore case", hvis
nu der står <!--XXX-->
Avatar billede berglund Nybegynder
15. april 2002 - 23:47 #12
Fint. Tak for hjælpen. Du skulle have modtaget pointene. Blot et sidste spørgsmål:
Er der en måde hvorpå man kan referer til den tekst som er blevet fjernet, altså det der er identificeret som (.*?)?
Avatar billede erikjacobsen Ekspert
15. april 2002 - 23:50 #13
ja, som \1  (dvs inden i "...." skal du skrive ".....\\1.....")
Avatar billede berglund Nybegynder
15. april 2002 - 23:56 #14
Tusind tak!
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