url encode if abfrage

Was für einen Unterschied macht es, ob du beides durchjagst oder nicht?
Werte die es nicht brauchen, werden in der Regel auch nicht verändert.

/edit:
Ansonsten könntest du dafür [phpf]ctype_alnum[/phpf] verwenden.
 
Du müsstest die URL in ihre Bestandteile zerlegen (siehe parse_url()-Funktion) und dann jedes Bestandteil auf nicht erlaubte Zeichen prüfen (siehe RFC 3986).

Für Pfadsegmente kannst du beispielsweise folgende Funktion nutzen:
PHP:
function encodePathSegment($str) {
	return preg_replace('/[^a-zA-Z0-9-._~!$&\'()*+,;=:@]/e', 'sprintf("%%%02X", ord("\0"))', $str);
}
 
danke aber ich glaube auf "nur buchstaben und zahlen" zu überprüfen wird nicht gehen, weil http://www.blabla.de/ da sind ja schon sonderzeichen drin.
Würde also immer anschlagen.
und zu Gumbo:
Gar nicht mal so schlecht aber ich glaub das behebt mein prob nicht.
Bei dem was ich baue wird eine Schleife durchlaufen mit der selben url.
Und jedes mal will er sie encoden.
Deswegen dauert dies so lange.
Deswegen will cih ein if davor bauen ob die url schon encoded ist.

MFG
Mark Paspirgilis
 
Ohne nach dem Sinn zu fragen:

PHP:
function noSpecialChars($URL)
{
  $a = parse_url($URL);

  return ($a["query"] == urlencode($a["query"]) &&
    $a["path"] == urlencode($a["path"]) &&
    $a["fragment"] == urlencode($a["fragment"]));
}

Der Name der Funktion ist noch nicht ganz so treffend aber fiel mir nichts besseres ein auf die schnelle.
Es wird ein booleanscher Wert ausgegeben, der sagt ob man die URL nicht encoden brauch (true) oder ob man sie durch urlencode jagen muss (false).

Ich hoffe ich habe die Bedingungen der allgemeinen Wahrscheinlichkeit nach angeordnet, zu Performance zwecken.
 
Zuletzt bearbeitet:
Und warum will es das? Na ja, ist aber auch eigentlich egal.

URLs dürfen nach meiner Betrachtung des genannten RFC nur aus folgenden Zeichen bestehen:
Code:
^(?:[a-zA-Z0-9-._~!$&\'()*+,;=:/?#\[\]@]|%[0-9a-fA-F]{2})+$
Das sagt aber dennoch nichts über die Richtigkeit ihrer Gestalt aus.
 
Zurück