Zeichen in einem String ersetzen mit Regex für URL bei seo

nightryu

Mitglied
Hallo, und Guten Morgen (Gute Nacht hört sich als Begrüssung komisch an :D )

Ich habe folgendes Problem... ich wollte bei meiner seite einiges ändern und dazu zählt auch das URL-Format
das soll von zB domain.de/?serie=2&serienid=111 auf das Format domain.de/serien/serientitel
, alles schön gut und das meiste auch nicht das problem weil ich das schonmal durch hatte aber aufgegeben habe... nun wollt ich nen neuen anlauf machen... brauche aber mal hilfe bei folgendem, ich möchte mir ne funktion schreiben
in der der übergebene string von allen nicht in URLs nutzbaren Zeichen und anderen Sonderzeichen wie komma und so bereinigt werden, bzw, diese Zeichen durch einen Joker oder so ersetzt werden wie zB "_" oder so.
Hatte damals was mit regex gebastelt.. kann es aber nirgends mehr finden...
sollte ungefähr so aussehn:

Code:
function string4seo($string){
 ~~
}
#######################
$text = "Blue Drop: Tenshi-tachi no Gikyoku";
$ausgabe = string4seo($text);
// Ausgabe : "blue_drop_tenshi_tachi_no_gikyoku"


ich hoffe ihr könnt mir dabei helfen... ich bin da derzeit irgendwie am verzweifeln...
 
Es sollte keine aufeinanderfolgende Unterstriche geben. Deshalb:
PHP:
function string4seo($string)
{
	return strtolower(preg_replace('/\W+/', '_', $string));
}
 
Vielen Dank und Repsekt für die so schnelle HIlfe :)
Ich kann mcih garnich oft genug bedanken ^_^

eine kleine Frage noch, wenn ich jetzt dadurch etwas herausbekomme, wo der string zB mit einem Punkt anfing, ersetzt er diesen ja auch mit "_"
zB wird ja aus

".hack//ROOTS 2.0" ganz einfach "_hack_roots_2_0"
der 'schönheit' halber wärs gut wenn ich vorher noch anführende oder endende _ direkt aus dem String herausfiltern kann.. wie tue ich das?^^
 
Zuletzt bearbeitet:
PHP:
function string4seo($string)
{
	return strtolower(preg_replace('/(?:^_+|_+$)/', '', preg_replace('/\W+/', '_', $string)));
}
 
das ist toll, so gehts schon richtig gut und ich lern dazu ^__^
mir ist gerade auch noch aufgefallen, dass er ö/ü/ä/ß nicht ersetzt
ich hab jetzt mal so gelöst:
Code:
	$string = preg_replace('/ö/','oe',$string);
	$string = preg_replace('/ä/','ae',$string);
	$string = preg_replace('/ü/','ue',$string);
	$string = preg_replace('/ß/','sz',$string);

mich würde interessieren, bzw bin ich mir sicher, dass dies bestimmt auch eleganter geht, das wäre dann denke ich auch der letzte schritt :)
 
für dein zuletzt aufgeführtes kannst du genau so gut die funktion str_replace nutzen...
PHP:
$search=array("ö", "Ö", "ü", "Ü", "ä", "Ä", "ß");
$replace=array("oe", "Oe", "ue", "Ue","ae", "Ae", "sz");
$string = str_replace($search, $replace, $string);
 
Zurück