Titel String als URL (für rewrite) umwandeln ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
array
befehl
beispiel
brauchbar macht
code
entsprechen
format
http
index
kleinschreibung
liste
machen
sonderzeichen
string
tran
umlaut
ungewollten zeichen
url
verzeichnis
-
Hallo,
ich habe bisher Links im Format
index.php?id=12345
zu jeder $_GET['id'] kann ich einen Titel zuordnen
(Array mit KEY = id (int) und VALUE = der titel für diese id (string)
die Titel kann ich aber nicht so 1:1 als Link-Adresse nehmen,
denn die enhalten u.a. auch Leerzeichen, Sonderzeichen, ...
also der Link soll nicht sein: der%20tite%20f?r%20diese%20id.html
sondern ohne Sonderzeichen: der-titel-fuer-diese-id.html (Leerzeichen als - oder _)
? --> gibt es dazu einen php-Befehl, der mir solche Titel-Strings für URLs brauchbar macht ?
oder muss ich die ungewollten Zeichen alle einzeln ersetzen (mit str_replace oder so)
? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Im quelloffenen Framework CodeIgniter ist eine solche Funktion enthalten. Diese sieht so aus:
function url_title($str, $separator = 'dash', $lowercase = FALSE) { if ($separator == 'dash') { $search = '_'; $replace = '-'; } else { $search = '-'; $replace = '_'; } $trans = array( '&\#\d+?;' => '', '&\S+?;' => '', '\s+' => $replace, '[^a-z0-9\-\._]' => '', $replace.'+' => $replace, $replace.'$' => $replace, '^'.$replace => $replace, '\.+$' => '' ); $str = strip_tags($str); foreach ($trans as $key => $val) { $str = preg_replace("#".$key."#i", $val, $str); } if ($lowercase === TRUE) { $str = strtolower($str); } return trim(stripslashes($str)); }
Im CodeIgniter-Verzeichnis unter ./system/helpers/url_helper.php ab Line 476 zu finden.
Beitrag zuletzt geändert: 18.4.2011 0:37:42 von mermadalis -
danke
hab ich gleich mal geteste, schon ganz gut
aber leider macht der aus Umlauten ä ö ü ---> NICHTS
schön wäre da jetzt noch ä zu ae und ö zu oe ... usw. (auch Großbuchstaben)
evtl irgendie ins $trans Array mit rein
oder $search und $replace ???
edit:
?!?! ---> wo wird $search überhaupt angewendet, wird zwar definiert, aber dann kein Wort mehr davon ?!
eigentlich wird mit dem Code doch nur das $trans umgesetzt, oder hab ich da was übersehen ?
Beitrag zuletzt geändert: 18.4.2011 0:55:49 von tengames -
Das geht doch viel einfacher alles mit str_replace!
Beispielcode:
function UrlFilter($str) { $ersetze_das = array('ä','ö',' '); //usw.. liste entsprechen ergänzen.... $mit_dem = array('ae','oe','_');//usw.. liste entsprechen ergänzen.... return str_replace($ersetze_das, $mit_dem, $str); }
-
Besser noch str_ireplace, um die groß und Kleinschreibung zu übergehen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage