Avatar billede ofirpeter Nybegynder
09. marts 2008 - 21:37 Der er 14 kommentarer og
1 løsning

Opdel og slet særligt indhold i variabel.

Hej,
Jeg leder efter en funktion, eller en ide til hvordan jeg kan opdele en tekst og fjerne alt der hedder <span XXXX> og </span>

Således at denne tekst:
<strong>
<span style="font-size: 14pt; font-family: Garamond">
  <font size="2">
  Tur 25: Bredgade gennem tiderne
  </font>
</span>
</strong>


Bliver til denne:
<strong>
<font size="2">
  DETTE ER MIN TEKST
</font>
</strong>

Problemet er at det der står på XXX plads er forskelligt for gang til gang. Findes der alligevel en metode der kan hjælpe mig?

Mvh.
Peter
Avatar billede nielle Nybegynder
09. marts 2008 - 21:44 #1
Sådan?

$tekst = "<strong>
<span style="font-size: 14pt; font-family: Garamond">
  <font size="2">
  Tur 25: Bredgade gennem tiderne
  </font>
</span>
</strong>";

$dinTekst = "DETTE ER MIN TEKST";

$pattern = "<span.*?>.*?</span>";
$phpPattern = "#$pattern#s";

$tekst = preg_replace($phpPattern, "<font size=\"2\">$dinTekst</font>", $tekst);
Avatar billede spyke112 Nybegynder
09. marts 2008 - 21:50 #2
http://dk2.php.net/preg_replace

Burde kunne klare jobbet, dog kan jeg ikke huske syntaxen for patteren, mener der er et wildcard prøv med dette:

$string = preg_replace("<span *>", "", $string);
Avatar billede spyke112 Nybegynder
09. marts 2008 - 21:50 #3
Dammit Oo
To slow, det der sker når man kommer ind på php.net, man glemmer alt andet xD
Avatar billede ofirpeter Nybegynder
09. marts 2008 - 21:53 #4
Ahh, fik lavet en fejl da jeg stille spørgsmålet:

Denne tekst:

<strong>
<span style="font-size: 14pt; font-family: Garamond">
  <font size="2">
  DETTE ER MIN TEKST
  </font>
</span>
</strong>


SKal blive til denne:

<strong>
<font size="2">
  DETTE ER MIN TEKST
</font>
</strong>
Avatar billede nielle Nybegynder
09. marts 2008 - 21:56 #5
Sådan?

$tekst = "<strong>
<span style="font-size: 14pt; font-family: Garamond">
  <font size="2">
  Tur 25: Bredgade gennem tiderne
  </font>
</span>
</strong>";

$pattern = "</?span[^>]*>";
$phpPattern = "#$pattern#s";

$tekst = preg_replace($phpPattern, "", $tekst);
Avatar billede ofirpeter Nybegynder
09. marts 2008 - 21:56 #6
Det skal gerne være sådan at jeg ikke behøver at skrive f.eks. fonte manuelt som her: $tekst = preg_replace($phpPattern, "<font size=\"2\">$dinTekst</font>", $tekst);

Da det typisk vil være meget lange tekster med forskelligt indhold, der blot skal have fjernet alle <span XXX>
Avatar billede ofirpeter Nybegynder
09. marts 2008 - 21:57 #7
Det ser godt ud! Jeg kigger lige på det.
Avatar billede nielle Nybegynder
09. marts 2008 - 21:59 #8
For et crash-kursus i regulære udtryk:

http://www.eksperten.dk/artikler/1156
Avatar billede ofirpeter Nybegynder
09. marts 2008 - 22:09 #9
Super godt! Kan jeg få dig til at lave et $pattern, for hvis jeg ønskede at få alle <font xx> ud også? Kan ikke helt gennemskue metoden.
Avatar billede nielle Nybegynder
09. marts 2008 - 22:18 #10
Hvad mener du med "få dem ud"? Fjernet fra koden, eller hvad?

Det gør man sådan her:

$pattern = "</?font[^>]*>";
Avatar billede ofirpeter Nybegynder
09. marts 2008 - 22:45 #11
Okay, det mente jeg jo også nok. Havde bare fået lavet en fejl et andet sted. Artiklen ser spændende ud, den vil jeg give mig i kast med.
Svar gerne
Avatar billede nielle Nybegynder
09. marts 2008 - 22:48 #12
Svar :^)
Avatar billede nielle Nybegynder
09. marts 2008 - 22:56 #13
Og så lige en lille bonus-forklaring af hvad mønsteret gør:

</?font[^>]*>

består af følgende dele:

< ... /? ... font ... [^>]* ... >

Forklaring:

< - matcher et <-tegn.

/? - matcher et /-tegn som måske er der eller måske ikke. Altså et valgfrit tegn. Det gør at der totalt kan matches på både <font> og </font>.

font - matcher på teksten "font".

[^>]* - matcher på et vilkårligt antal tegn som ikke er et >-tegn. Denne del matcher altså på det der står efter "font" og hen til lige før det afsluttende >-tegn. Den sikre at der ikke matches "udover enden" af font-taggen.

> - matcher på et >-tegn.
Avatar billede ofirpeter Nybegynder
09. marts 2008 - 23:17 #14
Perfekt. Mange tak for hjælpen. Den har virkelig været guld værd!
Avatar billede nielle Nybegynder
10. marts 2008 - 07:05 #15
Yakker for point :^)
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