我想要做的是创建一个类似永久链接的系统,例如 wordpress 永久链接。
例如:
$value = 'abc';
if($query_result > 0){
$value = 'abc1'; // if exists check abc2, abc3, abc4, abc5, etc. etc.
} else{
return $value
}
查询结果为搜索行数$query_result = mysql_num_rows
此刻我创建了这个:
if(!empty($_POST['ajax'])){
if($_POST['ajax'] == 'pages'){
echo prettyName($_POST['title']);
}
}
function prettyName($string)
{
$echo = strtolower(str_replace(array(' ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string))));
$sql = "SELECT * FROM posts WHERE post_pretty = '".$echo."'";
$res = mysql_query($sql) or die (mysql_error());
$num = mysql_num_rows($res);
if($num){
$echo = $echo.'-'.pretty2($echo, $num);
}
return $echo;
}
function pretty2($echo,$num,$i = 1)
{
$sql = "SELECT * FROM posts WHERE post_pretty = '".$echo.'-'.$i."'";
$res = mysql_query($sql) or die (mysql_error());
$num = mysql_num_rows($res);
if($num){
$i++;
$i = pretty2($echo,$num,$i);
}
return $i;
}
它有什么作用:
- 检查
$value
($_POST['title']
) 是否存在 - 转换为漂亮字符串(例如:abc = abc)
- 检查 prettystring 是否存在 else +1(例如:abc 存在,abc-1 - abc-9999)
- 循环 prettystring 直到免费名称不存在。
但出问题的是:
例如,如果我创建一个新帖子:
new post 1 name = testpage // results in testpage
new post 2 name = testpage // results in testpage-1
new post 3 name = test-page // results in testpage-2 // should be test-page
如果我创建一个包含太多空格的新帖子,它也会出错,我可以用什么来删除所有空格?尝试使用 TRIM 功能,但没有奏效。还是我应该使用 javascript 来避免这种情况?