2017-09-17 1 views
0

Ich mache gerade eine Website (mit PHP und einer Datenbank) und da etwas, worüber ich mich wundere.ID von einer URL, die nicht enthält? = ID

Können Sie eine ID von einer URL wie diesem erhalten, zum Beispiel egh95.com/u1 oder egh95.com/t52-it-s-a-new-day? Ich möchte nur das int meine ID sein. Ich habe versucht, $_Server["REQUEST_URI"] zu verwenden und alle Zeichen und Symbole von der URL zu entfernen, aber das int ich bekam, funktionierte nicht, um die Informationen aus der Datenbank zu erhalten.

Ich weiß, wie man $_GET["id"] verwendet, um das int von der URL zu erhalten (das ist das einzige, was atm funktioniert), aber ich möchte nicht, dass die URL ?=id1 oder so ähnlich ist.

+0

Sie müssen speichern eine Zuordnung zwischen jeder ID und die entsprechende URL-Segment, analysieren die Anfrage und versuchen à matchning zu finden ID und wenn gefunden, geben Sie die richtige Seite zurück – Cyclonecode

+0

Was meinst du mit int bekommen? Sie möchten u1 von Egh95.com/u1 oder nur 1? – Mav

+0

Nur die 1 von Egh95.com/u1, so dass es meine ID sein kann, um die Informationen aus der Datenbank zu bekommen – EGH95

Antwort

0

Ich würde nur eine grundlegende Regex verwenden, wenn das der Fall ist.

$url = 'egh95.com/u1'; 
preg_match('/^.*\/u(?P<data>.*)/', $string, $matches); 
echo $matches['data']; 

$ treffer [ 'data'] enthält die Nummer nach u, in diesem Fall 1. Here sind einige Dokumente für Regex in PHP, wenn Sie interessiert sind.

0

Wenn Sie Apache verwenden, können Sie mit ModRewrite benutzerfreundliche URLs implementieren. Es ist leicht, mit wenig Arbeit zu erreichen, worüber Sie geschrieben haben. Dann schreiben Sie in .htaccess Datei folgende Zeilen ein: (Angenommen, Sie die ID in index.php Datei bearbeiten möchten)

Options FollowSymLinks 
RewriteEngine On 
RewriteRule "^u(.*)$" "index.php?id=$1" 
+0

Mit der Zeile 'RewriteRule^u ([0-9] +) u.php? Id = $ 1 [NC , L] 'es hat tatsächlich funktioniert – EGH95