Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter如何从url_title()获取原始字符串?_Php_Codeigniter_Url_Seo - Fatal编程技术网

Php Codeigniter如何从url_title()获取原始字符串?

Php Codeigniter如何从url_title()获取原始字符串?,php,codeigniter,url,seo,Php,Codeigniter,Url,Seo,我试图学习如何使用代码点火器,但遇到了一个小问题。和大多数人第一次使用框架时一样,我也在写博客。我试图让我的视图链接看起来像:我已经做到了这一点。但是当我使用实际的视图方法时,我会遇到问题。基本上,我的博客文章标题指的是我数据库中的第一条日志记录。但实际标题看起来像我的博客,博文标题 那么,当原始日志是我的日志,日志标题时,我如何从日志标题中获取id,以便我可以从数据库中提取该日志?或者我应该只使用numbers吗?我不想 您应该能够使用 $parts = explode("/",$_SERVE

我试图学习如何使用代码点火器,但遇到了一个小问题。和大多数人第一次使用框架时一样,我也在写博客。我试图让我的视图链接看起来像:我已经做到了这一点。但是当我使用实际的视图方法时,我会遇到问题。基本上,我的博客文章标题指的是我数据库中的第一条日志记录。但实际标题看起来像我的博客,博文标题


那么,当原始日志是我的日志,日志标题时,我如何从日志标题中获取id,以便我可以从数据库中提取该日志?或者我应该只使用numbers吗?我不想

您应该能够使用

$parts = explode("/",$_SERVER['REQUEST_URI']);
$title=$parts[(count($parts)-1)];

将url转换为数组,然后从最后一节中获取标题。字符串将-替换为,然后在数据库中执行%like&搜索标题。不确定这是否是最好的方法,但应该有效。

此代码可以帮助您提取标题:

$url_string = "view/my-blog-post-title";

function getOriginal($url_string) {
    $url_parts = explode("/",$url_string);
    $url_title = $url_parts[1];
    $title_parts = array_map("ucfirst",
           explode("-",$url_title));
    return implode(" ",$title_parts);
}

echo getOriginal($url_string);
这将输出:

我的博客文章标题

棘手的部分是在何处插入逗号,。这是很棘手的,因为博客文章标题可能有更多的词,比如我的博客文章标题,其他一些词或我的博客标题。逗号可以用在任何地方

如果在我的博客之后插入逗号总是常量,那么在调用getOriginai之后只需执行str_替换即可

echo str_replace("My Blog","My Blog,","My Blog Post Title");

嗯,我认为最好的解决方案和更简单的方法是在posts表中创建一个列,称为slug,它包含在您创建文章时的url\u标题输出,您将该值保存在这个db列以及其他信息中,并对其进行查询,而不是使用这个更复杂的方法

因此,您可以通过$this->uri->segment3或将整个uri传递给控制器的方法来获取url的最后一段,并对该列进行查询:

class Blog extends CI_Controller {

  public function view($slug)
  {
    $this->load->model('blog_model');
    $data['posts'] = $this->blog_model->search_slug($slug);
    $this->load->view('myview',$data);
  }
}
型号:

function search_slug($slug)
{
  $this->db->select('id,title')
           ->from('posts')
           ->where('slug',$slug);
  $query = $this->db->get();
  return $query->row();
}
查看“myview.php”:

echo $posts->id;
echo $posts->title;

这并不是我要问的,Codeigniter将最后一部分作为方法的参数,所以我已经有了它。谢谢你的回复,我会尝试一下%like%的东西。我使用同样的方法,并且包含了帖子ID,所以我的url看起来像mysite/16我的帖子标题,这样我就可以使用$url=explode$this->uri->segment1,'-'$id=$url[0];是的,我经常做类似的事情,无论是id/鼻涕虫标题还是/id:鼻涕虫titleI都没想过要这么做,谢谢你给我小费!