我正在努力使我的网址变得漂亮。这是我提出的逻辑。
现在我想在网址上实现这样的目标。
http://domain.com/category/date/post-title
因为我首先填充了数据库中的值,即日期和帖子标题,如此
日期:
$date = date("d", $row['timestamp']);
$month = date("m", $row['timestamp']);
$year = date("Y", $row['timestamp']);
$date_url = $date.$month.$year;
标题:
$title = $row['title'];
$title_url = str_replace(" ", "-", $title);
现在我创建了一个超链接,将其发送到这样的URL。
<a href="news.php?id=<?php echo $id; ?>&cat=<?php echo 'news'; ?>&date=<?php echo $date_url; ?>&title=<?php echo $title_url; ?>"><img src="<?php echo 'admin-login/'.$pic_title; ?>"/></a>
我主要担心的是标题,我正在填充数据库中的值,是否可以使用str_replace()
这个?还是有更好的方法吗?
我是否在任何地方出错或者继续使用这种逻辑?
谢谢..答案 0 :(得分:2)
使用:
$date = date("dmy", $row['timestamp'])对于标题使用preg_replace删除所有非法字符
$title = strtolower(preg_replace(array('/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'), array('', '-', ''), $title));
答案 1 :(得分:2)
你没有考虑标点符号和其他特殊字符。
你可以这样做:
$from = array('/\W/','/-+/','/^-/','/-$/');
$to = array('-','-','','');
$title = preg_replace($from,$to,$title);
这会将所有非字词char替换为-
,用一个-
替换多个连续的-
,并删除前导-
(如果有的话)。
答案 2 :(得分:1)
$title = preg_replace('/\W/', '-', $row['title']);
答案 3 :(得分:0)
你需要sanitize标题中的所有特殊字符,确保所有字符都被删除。