/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
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
Vist : 868 gange
250 point
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

 
 
Kommentar
Fra : PARKENSS


Dato : 29-11-01 01:46

Hej

Prøv

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

Mvh
Parkenss


Accepteret svar
Fra : PARKENSS

Modtaget 260 point
Dato : 29-11-01 01:51

Hej igen
Den her er testet og virker
<?php
$str = "der%3Fvar%3Fengang%3Fet%3Flille%3Fhus";
$outstr = eregi_replace("%([A-Z0-9]{2})", "P\\1P", $str);
$initstr = eregi_replace("P([A-Z0-9]{2})P", "%\\1", $str);

echo $str."<BR>";
echo $outstr."<BR>";
echo $initstr."<BR>";
?>

Mvh
Parkenss

Godkendelse af svar
Fra : plys


Dato : 29-11-01 02:24

Tak for svaret PARKENSS.
                        

Kommentar
Fra : Nyhedsbruger


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



Kommentar
Fra : Nyhedsbruger


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

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste