Avatar billede hoppe11 Nybegynder
23. juni 2007 - 18:28 Der er 16 kommentarer og
2 løsninger

preg_replace udenfor/inden i HTML tags

1. hvordan laves en preg som replacer alt tekst udenfor HTML tags?

eks.
hej <b>med</b> dig hvad <img src=""> hedder <a href="link">du</a>
=>
[replace] <b>med</b> [replace] <img src=""> [replace] <a href="link">du</a>

2. hvordan laves en preg som replacer alt tekst inden i HTML tags (<a> undtaget)?

eks.
hej <b>med</b> dig hvad <img src=""> hedder <a href="link">du</a>
=>
hej <b>[replace]</b> dig hvad <img src=""> hedder <a href="link">du</a>
Avatar billede jensgram Nybegynder
24. juni 2007 - 13:59 #1
2. (utestet)


preg_replace('|(<(?!a)([a-z0-9]+)[^>]*>).*?(</\\2>)|', '\\1[replace]\\3', $str);
Avatar billede jensgram Nybegynder
24. juni 2007 - 14:00 #2
Hov.

preg_replace('|(<(?!a[ >])([a-z0-9]+)[^>]*>).*?(</\\2>)|', '\\1[replace]\\3', $str);
Avatar billede hoppe11 Nybegynder
24. juni 2007 - 15:49 #3
jens >

umiddelbart ser det ud til at virke! :)

men jeg har lige et par spørgsmål..

?! hvad gør den? jeg syntes jeg læste et sted igår at man ikke kunne negate en string i PHP, men det kan man måske? :)
Avatar billede hoppe11 Nybegynder
24. juni 2007 - 16:33 #4
http://electrobeat.dk.linux17.wannafind.dk/v3/_tst.php

hvis man laver et <i> efter et <img> matcher den alt fra <img> til </i>
Avatar billede jensgram Nybegynder
24. juni 2007 - 16:33 #5
(?!a[ >]) er negativ lookahead (http://www.regular-expressions.info/lookaround.html), så jeg ikke kommer til at matche <a>-tags. grunden til [ >] er, at jeg blot ikke vil matche <a> eller <a ...>, mens eksempelvis <abbr ...> skal fanges...

Giver det mening?
Avatar billede jensgram Nybegynder
24. juni 2007 - 16:35 #6
Ups - det var da ikke meningen:

preg_replace('|(<(?!a[ >])([a-z0-9]+)( [^>]*)>).*?(</\\2>)|', '\\1[replace]\\4', $str);
Avatar billede jensgram Nybegynder
24. juni 2007 - 16:36 #7
NEJ!

preg_replace('|(<(?!a[ >])([a-z0-9]+)( [^>]+)?>).*?(</\\2>)|', '\\1[replace]\\4', $str);
Avatar billede hoppe11 Nybegynder
24. juni 2007 - 19:21 #8
det ser ud til at virke nu :)

- men dvs. at en negativ lookahead ikke bliver talt med som en gruppe?

kan du løse den første preg? :)
Avatar billede jensgram Nybegynder
24. juni 2007 - 19:57 #9
Lookarounds har netop 0-bredde. Jeg har ikke testet, så jeg ved ikke, om de bliver talt med (men kan se, at du selv har ændret til \\5, så det gør de vist)

Den første kan jeg ikke lige vende i hovedet :(
Avatar billede hoppe11 Nybegynder
24. juni 2007 - 20:55 #10
jeg så også tilføjet en ekstra gruppe omkring indholdet i tag'et

du vil måske mene at jeg skal finde en anden løsning, hvis den preg er så meget mere besværlig?
Avatar billede hoppe11 Nybegynder
24. juni 2007 - 21:14 #11
Jeg har en funktion som skal gøre følgende:
- wordwrap
- omskrive url's til links
- lave grafiske smilies
- envidere har man selv muligheden for at enable html

Måske jeg griber det lidt forkert an?

1. Hvis HTML er disabled oversættes alle < og > til &lt; og &gt;
2. Omskriver alle url's til links så de ikke ødelægges af wraps
3. Grafiske smilies
4. Wordwrap
Avatar billede hoppe11 Nybegynder
24. juni 2007 - 21:15 #12
må hellere sige at jeg så står ved punkt 4.. men jeg kunne godt tænke mig at vide om du umiddelbart har en anden rækkefølge i at gøre tingene? :)
Avatar billede jensgram Nybegynder
24. juni 2007 - 21:31 #13
> du vil måske mene at jeg skal finde en anden løsning, hvis den preg er så meget mere besværlig?

Den er ikke nødvendigvis mere besværlig - jeg kan bare ikke lige greje den inden i mit ho'ed :) Måske der kommer en anden forbi der kan...
Avatar billede jensgram Nybegynder
24. juni 2007 - 21:32 #14
Det er heller ikke fordi jeg ikke vil give det et shot - sidder bare med eksamen nu, og kunne kun lige overskue #2.
Avatar billede hoppe11 Nybegynder
24. juni 2007 - 21:35 #15
:)
Avatar billede hoppe11 Nybegynder
08. juli 2007 - 20:09 #16
jens >

smid et svar så deler vi points :)
Avatar billede jensgram Nybegynder
14. juli 2007 - 20:32 #17
Ok - så prøv at oprette den anden igen :)
Avatar billede hoppe11 Nybegynder
15. juli 2007 - 17:20 #18
svar
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