Avatar billede jenslyn_s Nybegynder
23. marts 2006 - 10:33 Der er 17 kommentarer og
1 løsning

regex - tage stykke ud af streng

jeg har strengen:
werijweiroj<content>ew io weoi woi woi  weoi ewr</content>ewrioj we

Hvordan tager jeg stykkket ud mellem <content>-tagget?
Avatar billede Slettet bruger
23. marts 2006 - 10:38 #1
$str = preg_replace("#<content>(.+)?<\/content>#", "$1", $str);
Avatar billede jakobdo Ekspert
23. marts 2006 - 11:35 #2
Eller:

if(preg_match('/<content>(.+)?<\/content>/i', $str, $match))
{
  echo $match[0];
}
Avatar billede morhan Novice
23. marts 2006 - 11:41 #3
eller

if(preg_match('/<content>(.+)<\/content>/is', $str, $match))
{
  echo $match[1];
}
Avatar billede Slettet bruger
23. marts 2006 - 11:43 #4
.. Der er jo også mange andre muligheder...
Avatar billede jakobdo Ekspert
23. marts 2006 - 11:45 #5
strpos og substr ville være den sejeste! :o)
Eller lav en parser...
Avatar billede morhan Novice
23. marts 2006 - 11:48 #6
modifieren s
er vel ret vigtig at få med i udtrykket, hvis indholdet af content kan indeholde linjeskift
Avatar billede jakobdo Ekspert
23. marts 2006 - 11:50 #7
Morhan, du har jo fuldstændig ret.
Avatar billede Slettet bruger
23. marts 2006 - 11:52 #8
s'et er vel ikke nødvendigt i min?
Avatar billede jakobdo Ekspert
23. marts 2006 - 12:00 #9
Se siden her:
wicez: Din løsning giver for meget tekst...

http://www.codebreaker.dk/exp/697444.php
Og hvis der er newlines eller lign, så skal s'et med.
Avatar billede Slettet bruger
23. marts 2006 - 12:09 #10
$str = preg_replace("#.*<content>(.+)?<\/content>.*#s", "$1", $str);

Sådan, om ikke andet ;)

Jeg kan godt lide, at jeg skal stå med upper-cases :P
Avatar billede morhan Novice
23. marts 2006 - 12:36 #11
for god ordens skyld, så skal ? vel med ind i parentesen, hvis du ønsker en ugrådig søgning

(.+?)
Avatar billede jakobdo Ekspert
23. marts 2006 - 12:58 #12
Wicez, du er med stor fordi du har fortjent det! ;o)
Jeg forstår dog ikke hvorfor preg_replace skal bruges til at fange noget som matcher.
preg_match siger vel næsten sig selv.
preg_replace primære opgave er vel, hmmm... at replace. :o)
Avatar billede Slettet bruger
23. marts 2006 - 14:43 #13
Hehe, tjah - man må udnytte det så groft man vil :)

morhan, det er vel underordnet hvor den står?
Avatar billede Slettet bruger
23. marts 2006 - 14:44 #14
- og tak for point.
Avatar billede morhan Novice
23. marts 2006 - 18:28 #15
det er ikke helt lige meget. Ved at placere ? udenfor, gør hele parentesen valgfri

dvs (.+)? er faktisk det samme som (.*)
begge er grådige
Avatar billede Slettet bruger
23. marts 2006 - 18:34 #16
Hvor ligger forskellen i det grådige og noget ikke-grådigt? hvordan er det defineret?
Avatar billede jakobdo Ekspert
23. marts 2006 - 18:46 #17
Grådig er følgende:

Hvis vi tager strengen:

<content>ew io weoi woi woi  weoi ewr</content>woi  weoi ewr</content>

Så vil en grådig regexp matche til sidste </content> så vi vil få:
ew io weoi woi woi  weoi ewr</content>woi  weoi ewr

En ikke grådig regexp vil give:
ew io weoi woi woi  weoi ewr
Avatar billede Slettet bruger
23. marts 2006 - 19:26 #18
Ah okay. Så forstår jeg jeres antydninger :)
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