Gå til innhold

Trenger hjelp med eregi_replace el.l.


Anbefalte innlegg

Holder på og lage en filbassert nettside der man kan legge inn nettsider i forskjellige mapper som automatisk genererer sider. Men så har jeg ett problem når man bruker MSword og lager dokumenter med bilder. Da lager MSword en mappe for bildene. (filnavn-filer) el.l.

Problemet går ut på tolking av det norske tegnsettet.(øæå). Hvis jeg lager et word-webside som heter Trådløst nettverk blir "bilde mappen" kalt Trådløst nettverk-filer.. Problemet da er at linkene ikke fungerer i firefox. i IE og Opera fungerer det fint. Men firefox krever %c3%a5 istede for å osv.

 

Noe av koden:

PHP leser ut innholdet av filen og legger den i $contents.

$handle = fopen($FilePath, "r");
$contents = fread($handle, filesize($FilePath));
fclose($handle);

 

Da kan jeg kjøpe echo $contents for å skrive ut innholdet. Men som sagt så fungerer ikke dette i Firefox.

 

Hvis jeg behandler $contents først så vises bildene fint i firefox.

$contents = str_replace("å", "%c3%a5", $contents);
$contents = str_replace("ø", "%c3%b8", $contents);
$contents = str_replace("æ", "%c3%a6", $contents);	

Men problemet nå er at alle æøå i $contents blir byttet ut. og da blir teksten slik:

Tr%c3%a5dl%c3%b8s guide .. Ikke særlig leselig.

 

Så det jeg har lyst til å få til er å byttet ut æøå med %c3%a5 osv kun innenfor img taggene.

<img width=209 height=149
src="Trådløst nettverk/Trådløs%20guide%20windows%20XP-filer/image002.jpg" align=left hspace=12>

til å bli

<img width=239 height=292
src="Tr%c3%a5dl%c3%b8st nettverk/Tr%c3%a5dl%c3%b8s%20guide%20windows%20XP-filer/image003.jpg" align=left hspace=12>

 

Har slitt med dette en god stund nå så hvis noen har en ide så hadde det vært SUPERT! :w00t:

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

preg_replace()

 

PHP

<?

 

$dokument_ny preg_replace('/\<img (.*?)\>/is'"<img ".urlencode("$1").">"$dokument);

 

?>

 

denne koden e ikkje testet. eg vet heller ikkje om den virker men det e no en "byggetegning".

så nestemann som kan litt om preg_replace kan godt fikse den over :p

 

 

EDIT: testet koden over nå, virket IKKE. SE

Endret av Slettet+142
Lenke til kommentar

<?php
function url_encode($matches){
return "<img$matches[1] src=\"". str_replace(array("æ", "ø", "å"), array("%c3%a5", "%c3%b8","%c3%b8"), $matches[2]) ."\"$matches[3]>";
}

echo preg_replace_callback("#\<img(.*?) src=\"(.*?)\"(.*?)\>#", "url_encode", $dokument);
?>

Ikke testet...

Endret av Zic0
Lenke til kommentar

JIPPI! Da fungerer det! :-)

 

function url_encode($matches){
return "<img$matches[1] src=\"". str_replace(array("æ", "ø", "å"), array("%c3%a6", "%c3%b8","%c3%a5"), $matches[2]) ."\"$matches[3]>";
}

$contents = preg_replace_callback("#\<img(.*?) src=\"(.*?)\"(.*?)\>#", "url_encode", $contents);	

Fikk denne koden tidligere men da fungerte den ikke... Men så så jeg at arrayene i funksjonen var feil. Bytta feil bokstav mot feil tegnoppsett...

 

Er det noen som har ett tips på hvordan jeg kan få koden over til å fungere selv om img taggen er over to linjer?

 

<img width=239 height=292
src="TrÃ¥dløst nettverk/Trådløs%20guide%20windows%20XP-filer/image003.jpg" align=left hspace=12></p>

Lenke til kommentar

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