iChristian Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Jeg er på utkikk etter et script som er slik at det når php henter tekst fra SQL så blir alle ord som også ligger i en liste på webhotellet byttet ut med noe annet. Slik at hvis det står php i teksten så blir det byttet ut med http://www.php.no, ubuntu blir http://www.ubuntu.no, windows blir http://www.windows.no og så videre. Er det noen som vet hvordan man kan få dette til å fungere? Enda bedre hadde det vært om selve listen kunne være plassert i MySQL også. Lenke til kommentar
kjey Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 (endret) Jeg tror dette kan løses ved å lage en egen tabell i mysql med alle de spesielle ordene sammen med den eventuelle webadressen (ord | adresse f.eks....). Det du da gjør er å bruke funksjonen str_replace () til å erstatte ordene. Har ikke tid til et stort eksempel, men kan hjelpe deg litt: <?php // Du må hente tekststrengen fra databasen, altså den lange teksten og legge den i en variabel ($streng) // Du må hente de spesifikke ordene i tabellen din med en løkke // La oss si at tabellen din ser slik ut: ord | adresse while ($ord = mysql_fetch_array($query_resultat)) { str_replace ($ord[0], "<a href='" . $ord[1] . "'>" . $ord[0] . "</a>", $streng); } ?> $ord[1] er adressen som settes inn i en vanlig html link slik at teksten bytter ut f.eks. da PHP med <a href="www.php.net">PHP</a>. Håper det er til hjelp! EDIT: Husk å ta hensyn til om strengen er i store eller små bokstaver! Endret 23. mai 2006 av kjey Lenke til kommentar
arnizzz Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 (endret) Jeg tror dette kan løses ved å lage en egen tabell i mysql med alle de spesielle ordene sammen med den eventuelle webadressen (ord | adresse f.eks....). Det du da gjør er å bruke funksjonen str_replace () til å erstatte ordene. Har ikke tid til et stort eksempel, men kan hjelpe deg litt: <?php // Du må hente tekststrengen fra databasen, altså den lange teksten og legge den i en variabel ($streng) // Du må hente de spesifikke ordene i tabellen din med en løkke // La oss si at tabellen din ser slik ut: ord | adresse while ($ord = mysql_fetch_array($query_resultat)) { str_replace ($ord[0], "<a href='" . $ord[1] . "'>" . $ord[0] . "</a>", $streng); } ?> $ord[1] er adressen som settes inn i en vanlig html link slik at teksten bytter ut f.eks. da PHP med <a href="www.php.net">PHP</a>. Håper det er til hjelp! EDIT: Husk å ta hensyn til om strengen er i store eller små bokstaver! 6159875[/snapback] Kan man ikke bare kjøre de listene i en array? $Tekst = "Tekst som skal endres"; $OrdUtenURL = array("windows","linux","mac"); $OrdMedURL = array("www.windows.com",linux.com","mac.com"); $NyTekst = str_replace($OrdUtenURL, $OrdMedURL, $Tekst); Måten du fyller opp arrayene velger du selv. Tror det skal fungere. edit: Jeg vet ikke helt hvordan det vil fungere om man har eksisterende tilfeller av "windows.com".. OM det da blir "windows.com.com" er jeg veldig usikker på. Men det får du nesten bare teste. Endret 23. mai 2006 av arnizzz Lenke til kommentar
Jonhoo Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Joda, den siste der er helt riktig, men for å forhindre windows.no.no, legg inn mellomrom: $Tekst = "Tekst som skal endres"; $OrdUtenURL = array(" windows "," linux "," mac "); $OrdMedURL = array(" www.windows.com "," linux.com "," mac.com "); $NyTekst = str_replace($OrdUtenURL, $OrdMedURL, $Tekst); Du hadde forsåvidt glemt et " også Lenke til kommentar
arnizzz Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Joda, den siste der er helt riktig, men for å forhindre windows.no.no, legg inn mellomrom: $Tekst = "Tekst som skal endres"; $OrdUtenURL = array(" windows "," linux "," mac "); $OrdMedURL = array(" www.windows.com "," linux.com "," mac.com "); $NyTekst = str_replace($OrdUtenURL, $OrdMedURL, $Tekst); Du hadde forsåvidt glemt et " også 6162789[/snapback] Mellomrom ja.. haha. Selvfølgelig. Lenke til kommentar
hockey500 Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 bortsett fra at det ikke vil funke hvis ordet er sist i en setning, altså har et punktum rett etter. Lenke til kommentar
Jonhoo Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Nei.. Men hvis alt det skulle taes med så ville du måtte bruke pregmatch $Tekst = "Tekst som skal endres"; $OrdUtenURL = array("windows","linux","mac"); $OrdMedURL = array("www.windows.com","linux.com","mac.com"); $NyTekst = preg_replace('/\s{1}'.$OrdUtenURL.'(\s|\.|\,|\n)/ig', ' '.$OrdMedURL."$1", $Tekst); Fornøyd nå? Lenke til kommentar
hockey500 Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Aner ikke, siden jeg nesten aldri har brukt regulære uttrykk, men hvis du sier det er det sikkert riktig. Lenke til kommentar
kjey Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Ja, selfølgelig så er arrays et bedre alternativ! Kanskje jeg svarte litt for tidlig på morgningen Satt i en teoritime med økonomi, så jeg hadde ikke helt tankene klare 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å