Avatar billede yaief Nybegynder
23. februar 2003 - 16:43 Der er 20 kommentarer og
2 løsninger

Regexp

Hej ...

Trods ihærdige forsøg er jeg stadig den vildeste amatør til regular expressions - øv.

Jeg har et par problemer som jeg virkelig håber nogen gider hjælpe mig med - nogen forklaringer på hvordan det fungerer vil jeg også meget gerne have, men det er ikke nødvendigt.
Alt skal behandles som case-insesitivt

1)
Alt i <FONT  > tagget skal slettes undtagen hvad der måtte stå som Size=?
F.eks. <FONT SIZE='2' class='blah'> skal blive til <FONT SIZE='2'> - og desværre kan der jo både være SIZE=2 SIZE='2' SIZE="2"

2)
Lidt nemmere da alle <P nogetindhold> skal ændres til <P>

3)
<SPAN nogetindhold> skal slettes
Avatar billede fangel Nybegynder
23. februar 2003 - 16:51 #1
2)

$str = ereg_replace("<p([^>])+>", "<p>", $str);

men jeg er ikke sikker... også ret ringe... ser lige om jeg kan finde en guide som jeg engang fandt...

Morten
Avatar billede fangel Nybegynder
23. februar 2003 - 16:52 #2
Avatar billede yaief Nybegynder
23. februar 2003 - 17:10 #3
Okay, tak! Det ser ud til at jeg har klaret 1) og 2) nu. Nogen gode bud på 1? En alternativ version er bare at man sletter alle <FONT> tags der ikke er i formatet <FONT SIZE=?> hvor ? kan være fra 1 til 7
Avatar billede alrua Nybegynder
23. februar 2003 - 17:16 #4
er size altid den første parameter i font-tagget, eller kan der godt stå noget før det?
Avatar billede yaief Nybegynder
23. februar 2003 - 17:18 #5
Ikke nødvendigvis, men hvis det ikke er det kan tagget såmænd bare slettes. Egentligt er der ikke brug for andre font tags end dem af lige netop <FONT SIZE=?> typen
Avatar billede fangel Nybegynder
23. februar 2003 - 17:28 #6
alrua => size=? kan stå over det hele, det er ikke korrekt syntakst... men siden hvornår har FP ol gået op i korrekt syntakt... ;)

Morten
Avatar billede fangel Nybegynder
23. februar 2003 - 17:32 #7
men noget i stil med

$str = ereg_replace("<font (^size=[1-7]|>)+ size=((\'|\")?(+|-)?[1-7](\'|\")?) (^size=[1-7]|>)+", "<font size=\\2>", $str);

men jeg er MEGET usikker på at det vil virke... MEGET usikker...

Morten
Avatar billede yaief Nybegynder
23. februar 2003 - 17:35 #8
Desværre, jeg får en Warning: REG_BADRPT
Avatar billede fangel Nybegynder
23. februar 2003 - 17:49 #9
tja, var usikker... ;)
Avatar billede yaief Nybegynder
23. februar 2003 - 17:51 #10
Er det så ikke muligt at du kan lave en der bare sletter alle der ikke er af formatet <FONT SIZE=?> ??
Avatar billede fangel Nybegynder
23. februar 2003 - 18:26 #11
jeg kan prøve... men jeg er som sagt ik' så sej til reg.exp...

$str = reg_replace("<font (^size=(\'|\")?[1-7]{1}(\'|\")?|>)", "<font \\1>", $str);

men stadig usikker...

Morten
Avatar billede alrua Nybegynder
23. februar 2003 - 19:19 #12
så vidt jeg kan se må der ikke være noget s i den sætning du har lavet - du skal bruge en ekstra parantes... :D

Og jeg er udemærket klar over at size kan stå alle steder - men det kunne da godt være at yaiefs kode havde nogle bestemte kriterier... jeg kan godt prøve at fixe noget når jeg kommer tilbage, men jeg skal lige spise først... :)
Avatar billede yaief Nybegynder
23. februar 2003 - 20:32 #13
Okay - håber på det bedste =)
Avatar billede alrua Nybegynder
23. februar 2003 - 20:39 #14
det her virker for mig:

$text = preg_replace("/<font(( size=(\"|\')?[0-7](\"|\')?)?[^>])*>/i", "<font\\2>", $text);

:)
Avatar billede yaief Nybegynder
23. februar 2003 - 22:09 #15
Hmm - hos mig laver den <FONT SIZE=2> om til <FONT size=+0> hvilket jo ikke giver meget mening ;-)
Avatar billede yaief Nybegynder
23. februar 2003 - 22:09 #16
og dea - hvis du vil have nogen point når jeg lukker spørgsmålet, må du hellere huske at svare?
Avatar billede alrua Nybegynder
23. februar 2003 - 22:23 #17
det virker altså fint for mig - har dog lige rettet til

$text = preg_replace("/<font(( size=(\"|\')?[0-7](\"|\')?)?[^>]?)*>/i", "<font\\2>", $text);
Avatar billede yaief Nybegynder
23. februar 2003 - 23:49 #18
Okay - tak - det virker næsten! Den ser ud til fint at ignorere dem med font size men en som <font face='arial'> bliver stadig til en <font size=+0>

ikke det store problem da det tag ignoreres, men bare lige til din orientering =)

Tusind tak for hjælpen begge to - hvis Morten lige svarer så lukker jeg i morgen hvis der ikke er nogen løsninger på +0'eren.

Mvh
YaiEf
Avatar billede alrua Nybegynder
23. februar 2003 - 23:54 #19
<font face='arial'> bliver til <font> på min, som det skal...
Avatar billede fangel Nybegynder
24. februar 2003 - 16:45 #20
svaa'r
Avatar billede alrua Nybegynder
24. februar 2003 - 17:50 #21
takker for point da :)
Avatar billede fangel Nybegynder
24. februar 2003 - 17:55 #22
også her ;)
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