Als het leven geen zin heeft, dan máákt het maar zin!  

 [GREED]
  gizmodo
  engadget

 [L-RS]
  home
  archief
  zoeken
  cam ß
  e-mail
  b3ta
  stats
  smakelijk

  

 
zondag, 12 november 2006

Perl
Zeg, bezoekers die slimmer zijn dan ik... Movable Type gebruikt Perl-expressions voor onder meer het filteren van commentaar. Nu heb ik er een aantal die het heel goed doen, maar bepaalde woorden laat ie ongemoeid.

Ik denk dat het uitroepteken er iets mee te maken heeft. Ik heb het ook maar bij elkaar gejat via Google, maar hoe zou ik...

/https?:\/\/[^\s\'"<>]*(?:work!|job!|site!|done!|you!)[^\s\'"<>]*/i

moeten herzien om het filter op "work!", "job!" et cetera te laten filteren? Of zou ie het gewoon zo moeten doen? Ik ben niet voor dit soort taalvragen in de wieg gelegd, ziet u.

Vastgelogd op 16:29

Reacties

Ik heb een boek over regular expressions, mag je best eens inzien.

Albert V - 13/11/2006 om 10:59:17

Als zoals in gewone regexp is, dan zou het ?:work/!|job/!| etc. moeten zijn, de / vertelt de parser dat het volgende karakter niet als metacharacter geparsed moet worden.

Philip - 13/11/2006 om 18:32:03

Ah, okee. Want een hele stapel spam is weinig meer dan een zogenaamd compliment op je werk of site, maar juist door expliciet op het uitroepteken te filteren hoop ik dat goed volk niet al te makkelijk in m'n filter vallen.

Lars - 13/11/2006 om 18:36:40

Eigenlijk zou je de spamassassin engine hiervoor moeten gebruiken; dan kan je de bestaande rulesets voor "spammy phrases"op al je commentaar loslaten, inclusief het scoresysteem: Als een bepaalde drempel bereikt word dan is het spam en wordt het verwijderd, en als het in een grijze zone is komt het in een moderatiewachtrij. Voordeel is dat je niet zelf met perl hoeft te kl*ten, je zou daarmee de open source spamrules kunnen gebruiken. (of zelfs commerciele varianten, zoals die van m'n werkgever :-)

Philip - 13/11/2006 om 19:25:22

Als je alleen wil matchen op de woorden work!, job! etc. Dan zie het punt niet zo van die hele https?\/\/ die je in je voorbeeld hebt staan.

/(work!|job!|site!|done!|you!)/i

Dat zou al genoeg moeten zijn om case-insensitive te matchen op de woorden plus uitroepteken.

/(work|job|site|done|you)!*/i

Bovenstaande werkt in principe nog mooier naar mijn mening. En matched ook op work!!! en job!!! etc.

En voor Philip. De escape-character is de backslash (\) en niet de normale slash (/).

Wim - 14/11/2006 om 15:15:07

@Wim: Dank! Dat ga ik mooi eens in het filter gooien. Het gaat me al snel boven de pet (heb ooit eens een verplichte module Pascal doorgeworsteld, dat was méér dan genoeg) :)

Lars - 14/11/2006 om 20:06:14

Okee, die regel werkt als een zonnetje! Het maakt die andere regels die ik ergens heb weggesnokt ineens een stuk rommeliger... Amateurs! ;)

Lars - 14/11/2006 om 22:55:41

Commentaar achterlaten

Naam:


E-mailadres:*


URL:*


Commentaar:


Vergeet me niet

* - optioneel



 
(c) 1999-2009 l-rs.org