Kjapp og trygg hosting for Wordpress

Forandre %C3% til æ

kongen

kongemedlem
Hvordan kan jeg forandre disse kråketegnene %C3% til en æ med php?

Det samme med kråketegnene til ø og å, samt mellomrom og store bokstaver av Æ, Ø og Å?
 

kongen

kongemedlem
Blir det noe slikt?

PHP:
<?php  
$football=$_GET['top'];  

if ($_GET['product'] == 'ball')  {  
    header('Location: http://domene.no/index.php?id='.urldecode($football)
);  
    exit();  
}   
?>
 

kongen

kongemedlem
Blir jo nesten skremt av advarslene på siden du linket til.

"Warning The superglobals $_GET and $_REQUEST are already decoded. Using urldecode() on an element in $_GET or $_REQUEST could have unexpected and dangerous results."
 

Pong

Jeg selger sʇɥƃıluʍop :)
Her kan det være en del forskjelligt som automatisk oversetter osv. FF feks viser ikke alltid i adresselinjen plassen du faktisk besøker og parametrene du faktisk oversender.

Som dokumentasjonen sier: GET og POST er allerede ferdigbehandlet. Du ville måtte bruke det motsatte:
Kode:
header('Location: http://domene.no/index.php?id='.urlencode($football)
for å være sikker på at hvis $football er "hei sveis", at ?id=hei+sveis - som ville vært riktig for en nettleser. Etterhvert bør du lese deg inn i hvordan character encoding fungerer (hvilket alfabet brukes).
 

kongen

kongemedlem
Jeg får det rett og slett ikke til å virke, det blir kråketegn uansett.

Hvis $football består av "%C3%A6"

Hvordan skal man bruke encode/decode i denne kodesnutten for å få den til en "æ"?

PHP:
<?php
$football=$_GET['top'];
header('Location: http://domene.no/index.php?ball='.urlencode($football))
?>

PHP:
<?php
$football=$_GET['top'];
header("Location: http://domene.no/index.php?id=urlencode($football)")
?>
 

adeneo

Medlem
Har testet, og dersom du skriver inn : http://domene.no/side.php?top=øæå

så vil :

PHP:
$football=$_GET['top'];
header('Location: /index.php?ball='.$football);

sende videre til : http://domene.no/index.php?ball=øæå

samtidig vil : http://domene.no/side.php?top=%C3%A6
videresende til : http://domene.no/index.php?ball=æ

uten at det trengs noe mer decode/encode ettersom $_GET allerede har riktig format.
Dette forutsetter sannsynligvis at alt er satt opp i UTF-8, og at dokumentet også er lagret i det tegnsettet.
 

Pong

Jeg selger sʇɥƃıluʍop :)
Første bit er riktig. Hvorfor det ikke fungerer er ikke godt å si, da må du utdype litt og fortelle hva du sender inn.
Hvis skriptet ditt heter test.php, så anroper du den altså med
Kode:
test.php?top=blerk

og så får da etter redirecten index.php's $_GET['id'] verdien 'blerk' sant?
 

kongen

kongemedlem
%C3%A6 blir til æ

Filen er en ren videresending php-fil uten noe html ting og tang. Hvordan setter man utf-8 på en slik fil?
 

kongen

kongemedlem
Nå blir æ til firkant �

Enten så virker det i IE og ikke FF og hvis jeg tuller med det ene og det andre så virker det i FF men ikke i IE. Begge vil ikke virke samtidig. Driiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiit.
 

kongen

kongemedlem
Siden som det skal videresendes til er en ekstern side, så bestemmer ikke hvordan url skal se ut, så jeg må bruke æ, ø og å.
 

adeneo

Medlem
Blir litt tipping, men du tester vel muligens dette på en Windows maskin da ?
MicroSoft har selvfølgelig sitt eget tegnsett, som også brukes som standard av Internet Eksploderer, cp1252.

Har hatt mye problemer med PHP under Windows ettersom mange funksjoner ikke fungerer som de skal, og ting blir annerledes i IE i forhold til Firefox ettersom Firefox bruker en svært enkel UTF-8 encoding dings, og ofte så vil det virke helt fint i Webkit, men ikke i FF, eller fint i IE men ikke de andre osv.

Problemet løser seg ofte når man laster ting opp på en Linux server, som bruker UTF-8.

Har brukt en halvtime av mitt liv som ikke jeg får tilbake på å forsøke å få frem den samme feilen, og har i det minste fått frem noe som virker som det er samme feilen, og fikset det med noe som ser ut til å fungere for meg etter litt plundring frem og tilbake.

Du får teste det og se om det fungerer eller ikke ?

PHP:
<?php
header('Content-type: text/html; charset=UTF-8');

$football = mb_check_encoding($_GET['top'], "UTF-8") ? urldecode($_GET['top']) : iconv('cp1252', 'utf-8', urldecode($_GET['top']));

if ($_GET['product'] == 'ball')  { 
    header('Location: http://domene.no/index.php?id='.$football); 
}    
exit();
?>
 
Topp