2009-07-05 8 views
1

Ich versuche, ein paar nette URLs zu machen.Url ersetzen

CREATE TABLE IF NOT EXISTS `games` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`title` varchar(200) DEFAULT NULL, 
`about` text, 
`release_date` int(10) NOT NULL DEFAULT '0' 

php

$id = str_replace('_', ' ', $_GET['title']); 
$query = mysql_query("SELECT * FROM games WHERE title = '$id'"); 
$row = mysql_fetch_assoc($query); 

if (!mysql_num_rows($query)) exit('This game is not in the database.'); 

etwas Hilfe benötigen Zeichen mit ersetzen.

Lässt der Titel eines meiner Spiele sagen ist Day of Defeat: Source Ich mag wäre es mit diesem zuzugreifen: Day_of_Defeat_Source. Wie würde ich das tun? Entfernen von Doppelpunkten, -, & und all das mit nichts. Jetzt sein: Day_of_Defeat:_Source

Aber wenn ich ersetzen: mit _ wird es wie folgt aussehen: Day_of_Defeat__Source

Wie kann ich um dieses gehen?

Entschuldigung für mein billiges Englisch, vielleicht und Moderator kann dies verständlicher machen.

Antwort

1

So ersetzen ':' durch '', die leere Zeichenfolge - wer sagt, dass Sie einen anderen Unterstrich dort setzen müssen?

+0

es wird nicht funktionieren. $ id = str_replace ('_', '', $ _GET ['title']); \t $ id = str_replace (':', '', $ _GET ['title']); –

+0

Uh - was sind diese beiden ersetzt, mit der zweiten ignoriert die erste ?! Der zweite muss offensichtlich $ id als drittes Argument verwenden! –

0
$bad = array('&', ':', '-'); //array of characters to remove 
$id = str_replace($bad, '', $_GET['title']; 
$id = str_replace('_', ' ', $id); 
...continue with query... 
0
$addr = "Day of Defeat: Source"; 
$search = array(" ", ":"); 
$replace = array("_", ""); 
$new_addr = str_replace($search, $replace, $addr); 

Jeder Wert von $ Suche wird in $ Adr gesucht werden, und wenn der Fall festgestellt wird, mit entsprechendem Wert von $ ersetzt ersetzt wird.

Also in diesem Fall müssen Sie „_“ ersetzt durch „“ und „“ ersetzt durch „“, so dass Sie Day_of_Defeat_Source

erhalten Alo Sie Zeichen an die Arrays $ Suche hinzufügen und $ ersetzen.

0

Sie könnten URL-encode es, und dann lesen Sie es mit URL-decode.

"Tag der Niederlage: Quelle" wäre "Day% 20of% 20Defeat% 3A% 20Source".

0

Ich würde vorschlagen, dass egal welche Entscheidungen Sie treffen, wenn Sie Zeichen ersetzen, sollten Sie den URL-Titel des Spiels in der Datenbank speichern. Das macht es für Sie viel einfacher, nach URLs zu suchen, da Sie die Ersetzungslogik nicht jedes Mal rückgängig machen müssen. Außerdem können Sie eine nette URL erstellen, ohne dass der Substitutionsprozess umgekehrt werden muss (umkehrbar?).

Mit der Umkehrbarkeit aus dem Weg, können Sie dies jetzt tun, was doppelt Unterstrichen entfernt:

$id = str_replace(array(" ", ":"), '_', $_GET['title']); 
$doubledUp = strpos($id, "__"); 
while ($doubledUp !== false) { 
    $id = str_replace("__", "_", $id); 
    $doubledUp = strpos($id, "__"); 
} 
0

Versuchen Sie dies ..

$string = "Day of Defeat: Source"; 
$string = preg_replace("/[^a-zA-Z0-9 ]/", " ", $string); //remove all non-alphanumeric 
$string = preg_replace('/\s+/', ' ', $string); //more than one spaces to single space 
$string = preg_replace('/\s/', '_', $string); //space to an underscore 
echo $string; 

Hoffnung, das hilft.

0

Ich schrieb eine Funktion URL::title() für das Kohana-Framework vor langer Zeit.

/** 
* Convert a phrase to a URL-safe title. Note that non-ASCII characters 
* should be transliterated before using this function. 
* 
* @param string phrase to convert 
* @param string word separator (- or _) 
* @return string 
*/ 
public static function title($title, $separator = '-') 
{ 
    $separator = ($separator === '-') ? '-' : '_'; 

    // Remove all characters that are not the separator, a-z, 0-9, or whitespace 
    $title = preg_replace('/[^'.$separator.'a-z0-9\s]+/', '', strtolower($title)); 

    // Replace all separator characters and whitespace by a single separator 
    $title = preg_replace('/['.$separator.'\s]+/', $separator, $title); 

    // Trim separators from the beginning and end 
    return trim($title, $separator); 
} 

View source at Github

Verwandte Themen