webForumDet fria alternativet

Problem med RE som felkoll

PHP

3 svar · 522 visningar · startad av aasah

Medlem sedan mars 20034 471 inlägg
Frågan#1

Jag använder en gammal PHP utan stöd för PDO:r mm. Alltså vill jag istället kolla att inte indata innehåller farligt skräp. Nyligen förbättrade jag denna koll genom att lägga till mer saker som den ska spärra, men nu blev det litet för bra... Jag försöker bl.a. få den att spärra ett visst ord, utan att för den skull reagera för alla ord som innehåller detta ord. Alltså tex, säg att jag vill spärra "cat" men inte "catering" eller "concat". Då skriver jag:

$stop = '/..<annat>..| cat | CAT /'

Problemet är att den verkar tycka att en helt oifylld form genererar skum indata som leder till högvis med epostmeddelanden till mig om att någon använder '' i formen. :( Varför och hur löser jag problemet?

Medlem sedan mars 20034 471 inlägg
#2

Kan man inte ha " " (mellanslag) som ett tecken bland andra som ska spärras med RE?

Medlem sedan mars 20034 471 inlägg
#3

aasah skrev:

Kan man inte ha " " (mellanslag) som ett tecken bland andra som ska spärras med RE?

Jo.

Felet visade sig vara ett logiskt fel i en helt annan ände av koden.

Medlem sedan feb. 2007278 inlägg
#4

Ännu smartare är att använda "word boundary", dvs. \b.

cat\b matchar "cat ", "cat\n", "cat.", "cat," osv.

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)