我正在尝试创建一个SEO友好的网站。目前网页有效,因为网址中显示的ID与product.php?id=4
类似,但我希望将ID
替换为product_name
,但此值可以包含空格,因此URL看起来像product.php?product_name=fence%20panel
,但这不起作用,因为我使用此GET变量来查找我的数据库中的产品详细信息,当它发生时,它认为它是一个单词,因此没有找到产品。所以我认为我需要的是一个变量,它添加一个连字符product.php?product_name=fence-panel
,但也是一个变量,可以将此连字符更改回空格。如果我错了,请纠正我
if(isset($_GET['id'])){
$id = $_GET['id'];
//Get the product if exists
//if no product then give a message
$sql = mysqli_query($myNewConnection, "SELECT * FROM products WHERE id='$id' LIMIT 1");
$productCount = mysqli_num_rows($sql);
if ($productCount > 0) {
//get product details
while($row = mysqli_fetch_array($sql)){
$product_name = $row["product_name"];
$price = $row["price"];
$details = $row["details"];
$category = $row["category"];
$date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));
$_SESSION['product_price_array'] = $price;
}
} else{
echo "No Product in the system";
exit();
}
答案 0 :(得分:2)
使用rawurlencode()
和rawurldecode()
。有关示例,请参阅the PHP documentation。它不会添加连字符,但它会做你想要的。要添加连字符,您可以在编码后尝试执行以下操作:$str = str_replace('-', '%2D', $str);
。你应该再次这样做,并在解码之前交换两个第一个参数!