我正在尝试制作一些不错的网址。
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
我该如何解决这个问题?
对不起我的廉价英语,也许和主持人可以让这更加难以理解。
答案 0 :(得分:1)
所以用':'
替换''
,空字符串 - 谁说你必须在那里放另一个下划线?
答案 1 :(得分:0)
$bad = array('&', ':', '-'); //array of characters to remove
$id = str_replace($bad, '', $_GET['title'];
$id = str_replace('_', ' ', $id);
...continue with query...
答案 2 :(得分:0)
$addr = "Day of Defeat: Source";
$search = array(" ", ":");
$replace = array("_", "");
$new_addr = str_replace($search, $replace, $addr);
$ search中的每个值都将在$ addr中搜索,如果找到它的情况将替换为$ replace中的相应值。
因此,在这种情况下,您将“”替换为“_”,并将“:”替换为“”,因此您将获得Day_of_Defeat_Source
您可以将任何字符添加到数组$ search和$ replace。
答案 3 :(得分:0)
你可以URL-encode,然后使用URL-decode阅读。
“失败之日:来源”将是“Day%20of%20Defeat%3A%20Source”。
答案 4 :(得分:0)
我建议无论你在替换字符时做出什么选择,都应该将游戏的URL标题存储在数据库中。这将使您通过URL查找游戏变得更加容易,因为您不必每次都撤消替换逻辑。它还允许您创建一个漂亮的URL,而无需使替换过程可逆转(可逆?)。
在可逆性的情况下,您现在可以执行此操作,从而删除双下划线:
$id = str_replace(array(" ", ":"), '_', $_GET['title']);
$doubledUp = strpos($id, "__");
while ($doubledUp !== false) {
$id = str_replace("__", "_", $id);
$doubledUp = strpos($id, "__");
}
答案 5 :(得分: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;
希望这有帮助。
答案 6 :(得分: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);
}