webForumDet fria alternativet

RegExp nr2

5 svar · 384 visningar · startad av sgtpepper

sgtpepperMedlem sedan apr. 20007 588 inlägg
#1

Någon snäll RegExp-kille (Robban? :e) som kan hjälpa mig med ett trivialt RegExp-problem:

Jag vill i en given sträng ta bort alla html-taggar förutom <br> och <p>, dessa skall vara kvar i oförändrad form. Jag vill alltså inte ersätta html-taggarna med något utan jag vill helt och hållet utplåna dom från strängen... Hur göra?

------------------
° 4711 - the number of the geek °

RobbanMedlem sedan dec. 19992 555 inlägg
#2

Om den givna strängen är $string:

$string =~ s{<(?!(p|/p|br)).*?>}{}igs;

En förklaring kanske? :)

<(?!(p|/p|br))

Matcha alla '<' som inte följs av 'p', '/p' eller 'br' (i:et på slutet gör att ingen skillnad görs mellan stora och små bokstäver).

.*?>

Samt matcha alla tecken fram till och inkluderande nästa '>' (s:et på slutet gör att även radmatningar inkluderas).

Det som matchas ersätts med ingenting ({}). Sedan gör g:et på slutet att matchningen blir global (d.v.s. innefattar alla HTML-taggar, inte bara den första).

------------------
Robban < robban@lipogram.com >

[Redigerat av Robban den 30 aug 2000]

sgtpepperMedlem sedan apr. 20007 588 inlägg
#3

Du är en äkta RegExp-gud! Jag knöböjer vid dina fötter! :e

Tack!

------------------
° 4711 - the number of the geek °

RobbanMedlem sedan dec. 19992 555 inlägg
#4

Hittade ett fel i uttrycket. Som det står släpps t.ex. även <pre></pre> igenom. Kanske inte så bra. :)

Ändra till:

$string =~ s{<(?!(p>|/p>|br> )).*?>}{}igs;

------------------
Robban < robban@lipogram.com >

sgtpepperMedlem sedan apr. 20007 588 inlägg
#5

Återigen tack!

------------------
° 4711 - the number of the geek °

RobbanMedlem sedan dec. 19992 555 inlägg
#6

Fel igen. Men den här gången är det inte orsakat av mig. :)

Ser nu att forumscriptet petat in ett mellanslag efter br>. Det skall inte vara där.

------------------
Robban < robban@lipogram.com >

137 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)