我在从 slug 用破折号分隔的页面获取内容时遇到问题。例如,如果我去www.example.com/home
它工作正常,但如果我去www.example.com/about-us
它会得到一个错误Trying to get property of non-object
,正如错误所说的是关于这条线的;
<h1><?php echo $page->Title; ?></h1>
<?php echo $page->Content; ?>
我有一个从数据库中获取 slug 的函数,看起来像这样;
function getSlug($name = null) {
global $db;
if ($name) {
$query = $db->prepare('SELECT * FROM pages WHERE `Title` = ? LIMIT 1');
$query->execute(array($name));
return $query->fetchObject();
}
}
我还有一个函数可以创建如下所示的 slug;
function createSlug($string){
$string = preg_replace( '/[«»""!?,.!@£$%^&*{};:()]+/', '', $string );
$string = strtolower($string);
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}
在我的 htaccess 中,我得到了规则RewriteRule ^([a-zA-Z0-9-/]+)$ index.php?name=$1 [L]
。
要获取内容,我使用了以下代码;
<?php
include 'header.php';
$slug = create_slug($_GET['name']);
$page = getSlug($slug);
?>
<div class="container">
<h1><?php echo $page->Title; ?></h1>
<?php echo $page->Content; ?>
<?php include 'footer.php'; ?>
我真的不知道问题是什么。任何帮助将非常感激。
提前致谢。亲切的问候