/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
URL encoding
Fra : plys


Dato : 29-11-01 01:32

Hej

Jeg skal bruge en URL encoding uden %-tegnet, derfor ville jeg gerne
ændre alle URL encodings fra eks. %3F til P3FP. Jeg skal desuden også
ændre den tilbage igen!

Håber nogen kan hjælpe... jeg er kommet frem til at det kan være noget i
denne stil - men den virker ikke.

$str = eregi_replace("\%\([A-Z0-9]+\){2}","P\1P",$str);

Svaret skal virke med PHP

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Mogens Meier Christe~ (29-11-2001)
Kommentar
Fra : Mogens Meier Christe~


Dato : 29-11-01 07:21

> Jeg skal bruge en URL encoding uden %-tegnet,

Hvorfor skal du dog det? ;)

>derfor ville jeg gerne ændre alle URL encodings
>fra eks. %3F til P3FP.

> $str = eregi_replace("\%\([A-Z0-9]+\){2}","P\1P",$str);

Problemet er at du skal skrive to back-slashes for at få een, altså
"\\1" i stedet for "\1".

Du kan også nøjes med A-F0-9 da G-Z ikke findes i hex.

Derudover ved jeg ikke hvorfor du har sat alle de andre backslashes og
plus'et?
Og parentesen står forkert... ;)

> Svaret skal virke med PHP

Hmm, følgende er utestet:

$str = eregi_replace("%([A-F0-9]{2})","P\\1P",$str);

Udpaningen er mere træls, dels fordi PHP normalt tager sig af
URL-decoding hvor du nu skal efter-behandle alle variable du har
modtaget pr. URL - og dels fordi f.eks. "PEEP" vil blive konverteret til
%EE - du kan ikke vide om det er det ene eller det andet!

Jeg synes det lyder som om du forsøger på noget "unaturligt"???

--
Mvh. Mogens
www.momech.dk



Morten Poulsen (01-12-2001)
Kommentar
Fra : Morten Poulsen


Dato : 01-12-01 13:34

In article <9u4k4s$1do5$1@news.cybercity.dk>, "Mogens Meier Christensen"
<mmc@nospam.dk> wrote:
> Udpaningen er mere træls, dels fordi PHP normalt tager sig af
> URL-decoding hvor du nu skal efter-behandle alle variable du har
> modtaget pr. URL - og dels fordi f.eks. "PEEP" vil blive konverteret til
> %EE - du kan ikke vide om det er det ene eller det andet!


$str = 'P3FPP12PP34P';

$res = '';
for ($i=0; $i<strlen($str); $i+=4) {
if ($str[$i] != 'P') die('mangler p');
//$res .= sprintf('%c', hexdec($str[$i+1] . $str[$i+2]));
$res .= '%' . $str[$i+1] . $str[$i+2];
if ($str[$i+3] != 'P') die('mangler p');
}

print($res);


Du kan bruge den nederste '$res .=' hvis du vil have '%3F...' tilbage, og
den oeverste hvis du vil have de decodede tegn tilbage.

mvh
Morten

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste