Gå til innhold

Script for å bytte ut enkeltord i tekst


Anbefalte innlegg

Skrevet

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å.

Videoannonse
Annonse
Skrevet (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 av kjey
Skrevet (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 av arnizzz
Skrevet

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å ;)

Skrevet
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. :p

Skrevet

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å? :p

Skrevet

Ja, selfølgelig så er arrays et bedre alternativ! Kanskje jeg svarte litt for tidlig på morgningen :D Satt i en teoritime med økonomi, så jeg hadde ikke helt tankene klare :hmm:

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...