Stringsuche

msycho

Erfahrenes Mitglied
Hallo!

Ich suche in der URL über eregi nach bestimmten Wörtern und lasse dann etwas ausgeben.
Wie stelle ich es jetzt an, dass auf der Startseite, also domain.de etwas ausgegeben wird?
Die Domain kommt ja immer vor.
Wie kann ich das klar unterscheiden und umsetzen?

Bsp:
(http://www.)domain.de : Ausgabe: Startseite
(http://www.)domain.de/forum : Ausgabe: Forum
usw.

Ich hoffe Ihr versteht was ich meine. :)
 
PHP:
$array = array(
	'/'      => 'Startseite',
	'/forum' => 'Forum',
);
$requestPath = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']);
if( isset($array[$requestPath]) ) {
	echo $array[$requestPath];
}
 
Hmh, tjo, dafür biste im falschen Forum^^ :D

Das machste am besten per mod_rewrite direkt mit dem apache. Der Grund ist simpel: Rufst du deinedomain.de/forum auf, geht der Apache gleich in diesen entsprechenden Ordner hinein, OHNE erst ein PHP-Script aufzurufen.

Anders funktioniert dies:

deinedomain.de/?d=forum

Damit sagst du dem Webserver, dass er die seite index.php bzw index.html aufrufen und diesen Parameter anhängen soll. Im Script selbst holst du dir per $_GET['d'] den Wert und kannst beispielsweise per:

PHP:
header("Location: deinedomain.de/forum.php");

weiterleiten.
 
Ah, danke, Gumbo!

Nur noch eine Frage: Nach was wird hier gesucht:

Code:
'/\?.*/'

Nach Backslash, Fragezeichen, Punkt, Stern und Slash, oder?

Wenn jetzt in der URL ein & drin ist, dann funktioniert das aber nicht mehr. :(
 
Das ist ein regulärer Ausdruck, mit dem der Query-String-Teil eines URLs entfernt werden soll, also quasi alles ab einem Fragezeichen.
 
Ach, die beiden Slashes am Anfang und Ende sind Delimiter. Also wird das Fragezeichen, Punkt und Stern gesucht. :)

Nochmal zu dem Problem mit dem &:

Hier mal der jetzige Stand:

PHP:
$array = array(
    'start.php' 					=> 'sitename',
    'forum/main.php' 				=> 'Forum',
    'forum/showcat.php' 			=> $forumcat['forumcat_name'],
    'forum/showthread.php' 			=> str_replace('re:', '', $post_title),
    'guestbook/viewgb.php' 			=> 'Gaestebuch',
    'content/overview.php&type=2' 	=> 'News-Archiv'
);
$requestPath = preg_replace('/\?.*/', '', $_GET['path']);
if( isset($array[$requestPath]) ) {
 echo $array[$requestPath];
}  
else {
 echo 'sitename';
}

Das Problem besteht jetzt im letzen Index des Arrays. Wenn ich das content/overview.php&type=2 aufrufe, springt er immer in das else-Konstrukt. Lasse ich &type=2 weg, passt alles und er gibt korrekt "News-Archiv" aus. Das &type=2 muss aber rein. Siehst Du da eine Lösung, Gumbo?
 
Lass dir doch mal den Wert der $requestPath-Variable ausgeben. Vielleicht hilft dir das bei der Suche nach der Ursache des Problems weiter.
 
Hm, O.K. jetzt weiß ich mehr, aber ich verstehe es nicht.

Der Link lautet so: content/overview.php&type=2
Die Variable $requestPath gibt jedoch das aus: content/overview.php

Muss ich das verstehen?

/EDIT: Das muss an dem preg_replace liegen:

Mach ich das weg steht da: /include.php?path=content/overview.php&type=2
Mach ich es wieder hin, steht: /include.php

Es geht aber beides mal nicht. Irgendwie liegt das glaub an den Sonderzeichen.
Wie kann ich denn das ändern, dass nicht alles ab dem ? gelöscht wird, sondern nur bestimmte Zeichen einzeln, bitte? Oder meint Ihr, dass das nicht das Problem ist?
 
Zuletzt bearbeitet:
Zurück