11. januar 2006 - 13:36Der er
11 kommentarer og 1 løsning
matche en text string med ord fra databasen
Hej Jeg skal bruge en funktion som tjekker printet fra noget tekst fra databasen, med ord fra en anden tabel fra databasen, og hvis noget matcher lave et link ud af ordet. Et eksempel kunne være hvis der i brødteksten fra en nyhed optræder navnet "Aphex Twin", og der eksisterer en række i "kunstner tabellen" som hedder Aphex Twin. I så flad skal ordet Aphex Twin i nyheden linke til en side som indeholder de informationer databasen rummer omkring Aphex Twin.
jeg kendte egentlig godt str_replace, men havde slet ikke tænkt på at man kan så meget med den. Hvor moget går det egentlig ud over hastigheden, hvis man skal gøre sådan et tjek på f.eks. brødteksten til 10 nyheder?
jeg fik dit eksempel til at virke rednex, men jeg har lige et hurtigt spørgsmål: Kan man lave den så den ikke er case sensitiv, hvis man nu skulle glemme et stort bogstav?
Desværre findes der ikke en case-insensitive version af str_replace() til PHP4. I stedet kan man bruge preg_replace(), men så skal der lige et par linier:
$search[] = $row['navn']; og $nyhed = str_replace($search, $replace, $nyhed); ændres til hhv. $search[] = '/' . preg_quote($row['navn']) . '/i'; og $nyhed = preg_replace($search, $replace, $nyhed);
Heldigvis havde jeg php5 på min webserver, så det hele virker som det skal nu. Mangetak for hjælpen begge to. Jeg slet ikke troet det ville være så let! Skriv et svar rednex.
Jeg turde ikke satse på at du havde PHP5 (det er de færreste som har det), så du fik PHP4 versionen i stedet. Det var nu også på tide at de fik lavet en case-insensitive version af str_replace().
lige en lille ting her på falderebet: Det virker til at output'et stopper hvis der optræder et komma i tekststrengen, kan det passe? hvad kan jeg i så fald stille op?
Hmm, det lyder godt nok mærkeligt. Bruger du str_ireplace() eller preg_replace()?
Når du nu kører PHP5 vil jeg anbefale at du bruger str_ireplace(). Så burde det ikke kunne gå galt.
Synes godt om
Ny brugerNybegynder
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.