0

我在从 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'; ?>

我真的不知道问题是什么。任何帮助将非常感激。

提前致谢。亲切的问候

4

2 回答 2

0

我已经通过在我的数据库中添加一个名为 Slug 的行来解决这个问题,我认为如果我希望 slug 与标题不同,这也会更好。

感谢@sk8terboi87 的努力

于 2012-12-26T11:39:03.197 回答
0

检查 ModRewrite 模块是否已启用,并且在 .htaccess 中检查以下行是否添加到顶部。

RewriteEngine On
于 2012-12-26T11:12:33.953 回答