URL manipulieren für mod_rewrite, Code ok?

Versuche gerade meine Link für mod_rewrite aufzupolieren. Natürlich müssen da einige Zeichen raus und ersetzt werden. Jetzt meine Frage an euch, macht man das normal so? Oder gibt es da einfachere Lösungen?

Danke für eure Antworten.

PHP:
function urlfix($out)
{
$out = str_replace(" ","-",$out);
$out = str_replace("'","",$out);
$out = str_replace(".","",$out);
$out = str_replace("!","",$out);
$out = str_replace("&","and",$out);
$out = str_replace("(","",$out);
$out = str_replace(")","",$out);
$out = str_replace("ö","oe",$out);
$out = str_replace("ä","ae",$out);
$out = str_replace("ü","ue",$out);
return $out;
}
 
Da gibts doch noch viel mehr zeichen :P

Ich mach das so (bin aber gerne für Verbesserungsvorschläge zu haben):
- alles kleinmachen (aus A wird a)
- Alles ersetzten was man halt ersetzten möchte^^ (also z.b. ö zu oe)
- Mit preg_replace alles andere rausschmeissen
 
Moin,

str_replace() erlaubt bei den ersten beiden Parametern auch Arrays, das dürfte die Sache performanter gestalten, aber ansonsten kann man das durchaus so machen :)
 
Danke für eure Beiträge!

Hab das jetzt wie Sven vorgeschlagen hat gelöst.

PHP:
function urlfix($in)
{
$original_url = array(' ', '\'', '.', '!', '/', '&', '(', ')', 'ö', 'Ö', 'ä', 'Ä', 'ü', 'Ü');
$manipuliert_url   = array('-', '', '', '', '-', 'and', '', '', 'oe', 'Oe', 'ae', 'Ae', 'ue', 'Ue');
$out  = str_replace($original_url, $manipuliert_url, $in);
return $out;
}

An sich genügt mir das schon. Mehr Zeichen brauche ich gar nicht und funktioniert. Danke euch.
 
Arbeite hier lieber mit einem regulären Ausdruck, der alle außer den erlaubten Zeichen ersetzt, beispielsweise:
PHP:
trim(preg_replace('/-+/', '-', preg_replace('/[^a-zA-Z0-9\-]/', '-', $string)), '-')
 
Danke noch für eure Antworten.

Deines würde auch funktionieren Gumbo, jedoch wenn zb. ein ö vorkommt, löscht er es mir komplett raus. Lieber wäre es mir das er ein oe daraus macht. Kann man das in deinen Codeblock noch irgendwie unterbringen? Oder geht das dann nur mit meinen Code?

Danke!
 
Bau doch einfach seinen Ausdruck dazwischen?

Also erst alles bekannte ersetzen, danach alles ersetzen was nicht geplant ist.
 
Zurück