ilpostino Skrevet 8. april 2007 Del Skrevet 8. april 2007 (endret) Hvordan kan en på lettest måte søke igjennom en gitt tekst for å se etter enkelte forekomster av ord ved å bruke php? jeg holder på å forebedre en gjestebok jeg har laget i php og der skal jeg søke igjennom kommentarene folk legger igjen blandt annet etter uønskede ord. må jeg da legge inn kommentarene inn i arrays og ta ord for ord sånn sett? Endret 8. april 2007 av ilpostino Lenke til kommentar
Martin A. Skrevet 8. april 2007 Del Skrevet 8. april 2007 PHP <?php$sensur = array ( 'Foo', 'Bar', 'Baz' ); $tekst = "Foo gikk sammen med Bar hele veien til Baz"; $tekst = str_ireplace ( $sensur, "*", $tekst ); echo $tekst; ?> Kan også lage ett array på hva som skal erstatte det ordet som fjernes. PHP <?php$sensur = array ( 'Foo', 'Bar', 'Baz' ); $erstatt = array ( '1', '2', '3' ); $tekst = "Foo gikk sammen med Bar hele veien til Baz"; $tekst = str_ireplace ( $sensur, $erstatt, $tekst ); echo $tekst; ?> Merk at det brukes str_ireplace(), som betyr at den er case-insensitiv. Kan også løses med regex, men kan man bruke str_(i)replace() så er vel det best? Lenke til kommentar
ilpostino Skrevet 8. april 2007 Forfatter Del Skrevet 8. april 2007 jeg skal ikke fjerne noen ord. jeg skal bare sjekke om et/flere ord finnes i en tekststring. her er slik jeg har prøvd foreløbig uten hell: $banned_word = array('viagra', 'sex'); foreach ($banned_word as $banned) { if (eregi($banned, $comment)) { //Tekst som avslutter scriptet kommer her } } Lenke til kommentar
Ståle Skrevet 8. april 2007 Del Skrevet 8. april 2007 Det er vel like greit å bare fjerne de "stygge ordene" enn å opplyse brukeren om det. eller? ereg() ? Lenke til kommentar
ilpostino Skrevet 8. april 2007 Forfatter Del Skrevet 8. april 2007 Det er vel like greit å bare fjerne de "stygge ordene" enn å opplyse brukeren om det. eller? da skal eksempelet jeg har skrevet over. med tanke på at $comment inneholder en hel setning - hva gjør jeg feil? Lenke til kommentar
Rinox Skrevet 8. april 2007 Del Skrevet 8. april 2007 Ståle, ereg() anbefales ikke å brukes da den er gammel og det da finnes nyere funksjoner som kjører raskere. Bruk heller preg_match() fremfor ereg. Merk deg at hvis du skal søke etter en liten bit tekst i ett ord eller lignende bør du bruke strstr() eller strpos() Håper det hjalp litt Lenke til kommentar
ilpostino Skrevet 8. april 2007 Forfatter Del Skrevet 8. april 2007 begynte å få dreisen på str_ireplace men jeg fikk det til med en gang med preg_match. testkoden jeg fikk det til med ble slik: //Denne koden sjekker om uønskede ord er skrevet inn og stopper hvis det er tilfelle. $banned_word = array("/viagra/", "/sex/","/href/"); $comment = "jeg hadde sex med href igår"; foreach ($banned_word as $banned) { if(preg_match ($banned, $comment)) exit ("forbidden"); } takk til begge for hjelp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå