php - 如何在 php 中创建动态 URL?

标签 php mysql .htaccess url url-rewriting

我是 PHP 和 MySQL 新手。

这是我到目前为止所尝试过的,但我不明白如何使用 PHP 制作 URL。

我想做的是创建一个关于特定书籍的动态网页。我已经在 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 的书的页面。

这里缺少什么?你能指导我创建动态网址的正确方向吗?我既需要指导(学习这个,搜索那个,等等),也需要对我的问题的具体答案(如果可能的话)。

最佳答案

不太清楚你的要求是什么。如果您想创建一个列出书籍网址的页面,那么您的 echo 语句就离您不远了。您只需从数据库中填充 $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]) 中包含书籍 ID,第二个元素中包含标题的第一个单词,依此类推。(如果您想使用此方法并将整个标题放在第二个您可能想要使用不同的字符将 id 从标题分隔到用于替换空格的字符。

关于php - 如何在 php 中创建动态 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570522/

相关文章:

python - 将时间戳+数据从mysql导入到python并绘制时间序列

mysql - 检查MySQL集合列表中是否存在某些项目

.htaccess 通过删除特定单词来重定向各个文件夹和子文件夹中的所有文件

apache - 将 Apache .htaccess 转换为 Nginx

php - Apache 重写 : file not found

php - 通过 PHP 和 SSH 的 Git : ssh authentification of user apache denied

php - PHP 中的依赖隔离和声明

php - 我应该使用不同的表为迁移创建多个模型吗

php - 在 INSERT ON DUPLICATE KEY UPDATE 中,检测指定插入值时是否使用默认值

arrays - fatal error : Cannot use string offset as an array