2009-07-05 16 views
1

私は素敵なURLを作ろうとしています。URL置き換え

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.'); 

文字を置き換えるといくつかの助けが必要。 Day_of_Defeat_Source

は私のゲームの一つのタイトルが、私はこれでそれにアクセスしたいDay of Defeat: Sourceであると言うことができます。どうすればいい?コロンを削除する - 、&と何も付いていないもの。今その:Day_of_Defeat:_Source

しかし、私は交換する場合:_と、それは次のようになります。Day_of_Defeat__Source

は、どのように私はこれを回避行くことができますか?

申し訳ありませんが、私の安い英語のために、多分、司会者は、これをより控えめにすることができます。

答えて

1

':'''に置き換えてください。空の文字列 - そこに別のアンダースコアを入れなければならないと誰が言いますか?

+0

それが仕事を文句を言いません。 $ id = str_replace( '_'、 ''、$ _GET ['タイトル']); \t $ id = str_replace( ':'、 ''、$ _GET ['タイトル']); –

+0

ええと - それらの2つのものは何ですか?最初のものを無視した2番目のものはありますか? 2番目の引数は明らかに3番目の引数として$ idを使用する必要があります。 –

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); 

$検索からの各値は、$ addrの中を探し、それが発見された場合は、$から対応する値に置き換えている場合は交換されます。

したがって、この場合には、あなたが_「に置き換え」「必要があります」と、「:」「に置き換える」、あなたは配列の$検索と$に任意の文字を追加することができますALOあなたはDay_of_Defeat_Source

を取得しますので、置き換えてください。

0

URL-encodeと入力し、URL-decodeを使用して読み取ります。

「Day of Defeat:Source」は、「Day%20of%20Defeat%3A%20Source」となります。

0

文字を置き換えるときの選択肢に関係なく、データベースのゲームのURLタイトルを保存することをお勧めします。これは、毎回置換ロジックを元に戻す必要がないため、URLでゲームを検索するほうがはるかに簡単です。また、置換プロセスを逆にする必要なく、素敵なURLを作成することができます(可逆?)。道のうちreversabilityで

、あなたは今、二重のアンダースコアを除去する、これを行うことができます。

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

は...

$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; 

・ホープこのことができます、これを試してみてください。

0

私はずっと前にKohanaフレームワークのために関数URL::title()を書きました。

/** 
* 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

関連する問題