2012-04-05 14 views
0

Ich versuche, diese Codezeile zu verwenden URL-Variablen mit Leerzeichen durch ‚% 20‘ ersetzt zu akzeptieren, aber es hat auch istPHP urldecode mit regex

$type=urldecode(ereg_replace("[^a-zA-Z0-9%]+", "", @$_REQUEST['type'])); 

Das Ergebnis durch einen regulären Ausdruck zu gehen, nur das% 20 20Doe

+0

Ihr könnte alles ersetzen, das durch Ihre Regex mit nichts übereinstimmt (""). – Dion

+1

Die Superglobale $ _GET und $ _REQUEST sind bereits dekodiert. Die Verwendung von urldecode() für ein Element in $ _GET oder $ _REQUEST kann zu unerwarteten und gefährlichen Ergebnissen führen. – miqbal

+0

Die Antwort lautet $ type = ereg_replace ("[^ a-zA-Z0-9 [: Leerzeichen:] [: leer:]] +", "", @ $ _ REQUEST ['type']); Wie erwähnt, muss es aus anderen Gründen durch die Regex gehen, $ _REQUEST wird standardmäßig decodiert – user1209203

Antwort

1

Sie haben die falsche Bestellung und beachten Sie, dass ereg_replace abgeschrieben .. preg_replace ist eine bessere Option

Versuchen

$type = ereg_replace("[^a-zA-Z0-9%]+", "", urldecode(@$_REQUEST['type'])); 

Bessere Approch

$type = @$_REQUEST['type'] ; 
$type = urldecode($type); 
$type = str_replace(" ","",$type) ; 

Dank

:)

0

anstatt sie zu ersetzen mit einem Raum zB JohnDoe nicht John Doe, von John% entfernt Wenn Sie nur versuchen, Raum zu ersetzen mit %20 dann verwenden:

str_replace(" ", "%20", $_REQUEST['type']); 

keine Notwendigkeit r zu verwenden egex hier.

+0

Falsche Parameterreihenfolge. str_replace (gemischter $ search, gemischter $ replace, gemischter $ subject [, int & $ count]) – miqbal

+0

"Platz ersetzen mit'% 20' "Er hat es richtig gemacht! ;-) – Basti

0

$type = str_replace("%20", "", @$_REQUEST["type"]); sollte funktionieren und würde alle% 20 durch "" ersetzen.