我是PHP和MySQL的新手。
这是我迄今为止尝试过的内容,我无法理解如何使用PHP制作网址。
我想要做的是创建一个关于特定书籍的动态网页。我已经创建并在我的MySQL数据库中有一些数据可供使用。
我有一个功能来清除书名中的特殊字符。
function seo($s) {
$tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç');
$eng = array('s','s','i','i','g','g','u','u','o','o','c','c');
$s = str_replace($tr,$eng,$s);
$s = strtolower($s);
$s = preg_replace('/&.+?;/', '', $s);
$s = preg_replace('/[^%a-z0-9 _-]/', '', $s);
$s = preg_replace('/\s+/', '-', $s);
$s = preg_replace('|-+|', '-', $s);
$s = trim($s, '-');
return $s;
}
实施例
echo seo($booktitle);
的.htaccess
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^/(.*)-(.*)$ /book.php?id=$1 [L,NC]
链接类型
echo "<a href='http://sitename.com/".$bookid."-".seo($booktitle)."'>".$booktitle."</a>";
我想要的输出
http://sitename.com/id-book-title
问题是,我不明白如何动态地将$ bookid从url传递给php本身。我想我需要从我的数据库中检索book_id并将其分配给$ bookid变量,这是正确的吗?但是如何将其连接到URL?
例如,当我输入网址http://sitename.com/5-the-trial时,我需要获取ID为5的图书页面。
这里缺少什么?你能引导我找到正确的方向来创建动态网址吗?如果可能的话,我都需要指导(学习,搜索等)以及我问题的具体答案。
答案 0 :(得分:1)
将重写规则替换为:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([^-]+)-(.+)$ /book.php?id=$1 [L,QSA]
答案 1 :(得分:1)
你的要求不太清楚。如果您想创建一个列出图书网址的页面,那么您的回声声明就不远了。您只需要从数据库中填充$ bookid和$ booktitle。 .htaccess没有参与。
echo "<a href='http://sitename.com/".$bookid."-".seo($booktitle)."'>".$booktitle."</a>";
但是如果要解压用户单击的链接的URL,则需要查看传递给页面的查询字符串。 .htaccess为您分解URL并将$ 1参数传递到您的脚本中。要阅读PHP中的URL,请尝试以下
parse_str($_SERVER['QUERY_STRING'],$query);
if (array_key_exists('id',$query)) {
$books = explode("-",$query['id']);
}
这将在第一个元素($ books [0])中创建一个包含book id的数组,在第二个元素中创建一个标题的第一个单词等。(如果你想使用这种方法并拥有整个标题第二种,您可能希望使用不同的字符来区分标题中的id和用于替换空格的字符。