kostenloser Webspace werbefrei: lima-city


Titel String als URL (für rewrite) umwandeln ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tengames

    tengames hat kostenlosen Webspace.

    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)
    ?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. urlencode zum Beispiel. Du kannst bei mod_rewrite aber mit Regex arbeiten, um die URLs sofort korrekt umzuwandeln.

    Beitrag zuletzt geändert: 16.4.2011 18:04:12 von fabo
  4. 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
  5. Autor dieses Themas

    tengames

    tengames hat kostenlosen Webspace.

    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
  6. 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);
    }
  7. Besser noch str_ireplace, um die groß und Kleinschreibung zu übergehen.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!