Avatar billede jalaba Nybegynder
22. november 2007 - 17:19 Der er 15 kommentarer og
1 løsning

Udlad tags i regulært udtryk

Hvordan undlader jeg <h(1-6)> OG <p>? Jeg tror det er noget alá nedenstående.

(?!<h[1-6])
(?!(<h[1-6]|<p))
Avatar billede barklund Nybegynder
22. november 2007 - 17:31 #1
Hvad laver udtrykket som det ser ud nu? Smid dit nuværende udtryk, så skal vi forsøge at modificere :)

--
Morten Barklund
Avatar billede jalaba Nybegynder
22. november 2007 - 17:51 #2
/^(?!<h[1-6])(.+)$/i

Den skulle gerne hente alle linjer der har noget indhold, men IKKE starter med "<h(1-6)".

Nu vil jeg bare gerne gøre det lettere at implementere flere tags der skal undlades.
Avatar billede barklund Nybegynder
22. november 2007 - 18:27 #3
/^(?!<(?:h[1-6]|p\s)(?:>|\s))(.+)$/i

Det skulle gerne undlade linjer, der starter med < efterfulgt af h[1-6] eller p efterfulgt af > eller whitespace. Så undgår du at fange pre-tags når du kun vil fange p-tags :)

--
Morten Barklund
Avatar billede barklund Nybegynder
22. november 2007 - 18:27 #4
hov...

/^(?!<(?:h[1-6]|p)(?:>|\s))(.+)$/i

Sådan :) Der var lige lidt for meget whitespace :)
Avatar billede nielle Nybegynder
22. november 2007 - 18:35 #5
Alternativt:

if (! preg_match("/^<(h[1-6]|p|a|img).*/i#", $dinTekst)) ...
Avatar billede barklund Nybegynder
23. november 2007 - 10:08 #6
#? Eller var det en typo? :)
Avatar billede barklund Nybegynder
23. november 2007 - 10:09 #7
(og der er vist ingen der har sagt php, men det er selvfølgelig implementerbart i andre sprog også)
Avatar billede nielle Nybegynder
23. november 2007 - 10:21 #8
# er en typo

Nej, der er ingen der har sagt PHP - men temmeligt mange af jalaba's andre spørgsmål er i PHP kategorien, så mon ikke det er et sikkert gær. :^)
Avatar billede barklund Nybegynder
23. november 2007 - 11:42 #9
Mmm... gær...
Avatar billede jalaba Nybegynder
23. november 2007 - 20:34 #10
Jeg kan ikke få din til at virke Nielle.
Men nu har jeg forsøgt mig med barklunds, og det ser godt ud, men den tager ikke slut-tags med :)

Jeg skal også lukke min <ul>, så nu ser mit regulære udtryk således ud:

/^(?!<(?:h[1-6]|\/ul|ul|li)(?:>|\s))(.+)$/i


Hvordan kan jeg undlade at skrive "\/ul", og bare nøjes med "ul"?
Avatar billede jalaba Nybegynder
23. november 2007 - 20:34 #11
og læg et svar ;)
Avatar billede nielle Nybegynder
25. november 2007 - 12:22 #12
Hvordan bruger du mit forslag? - for jeg kan altså godt få det til at virke.
Avatar billede jalaba Nybegynder
25. november 2007 - 15:24 #13
preg_replace( "/^<(h[1-6]|p|a|img).*/i#", "$1", $var )


"Unknown modifier '#'"

Når jeg så prøver uden #, så virker det bare ikke efter hensigten.
Avatar billede nielle Nybegynder
25. november 2007 - 19:45 #14
(23/11-2007 10:21:40) Det skal være uden '#'. Hvordan ser din kode ud? Dr4e må være lidt mere end det viste.
Avatar billede barklund Nybegynder
26. november 2007 - 07:26 #15
Smid en \/? ud forrest :)

/^(?!<\/?(?:h[1-6]|ul|li)(?:>|\s))(.+)$/i

--
Morten Barklund
Avatar billede barklund Nybegynder
01. december 2007 - 16:52 #16
Tanks :)
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
Kurser inden for grundlæggende programmering

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