【问题标题】:Replace string in Array in array with truncate string用截断字符串替换数组中的字符串
【发布时间】:2023-12-07 10:56:01
【问题描述】:

我正在为我的网站使用 CodeIgniter。我还在我的网站上使用 tumblr API 来显示发布的新闻。

由于显示整个文本有点过多,我想将正文截断为 150 个字符,我使用 CI 的character_limiter 函数来实现。

代码如下在我的“家庭”控制器中:

public function index() {       
    //Title for home page   
    $data['title'] = "Home - Welcome";

    // Obtain an array of posts from the specified blog
    // See the config file for a list of settings available
    $tumblr_posts = $this->tumblr->read_posts();

    foreach($tumblr_posts as $tumblr_post) {
        $tumblr_post['body'] = character_limiter($tumblr_post['body'], 150);
    }

    // Output the posts 
    $data['tumblr_posts'] = $tumblr_posts;      

    // Load the template from the views directory
    $this->layout->view('home', $data);
}   

问题是,当我在查看页面上回显 $tumblr_post['body'] 时,它并没有缩短。像上面那样在 Asp.net (C#) 中工作,但它似乎在 php 中不起作用,有谁知道为什么以及如何解决它,或者有其他方法吗?

【问题讨论】:

  • 你是否包含了文本助手..?
  • 我鼓励您在视图中而不是在控制器中执行此操作。
  • 请贴出函数character_limiter()的代码?
  • @eljunior: character_limiter 是 Codeigniters 文本辅助函数
  • @JasonMcCreary:我想让视图尽可能干净。直到最近,我使用了一个简化版本的库/框架勺子 plonk,它非常依赖模板,因为我一直使用它,所以我已经习惯了让尽可能多的代码远离视图的想法/template/front end 我个人必须同意这个想法,尽管整个模板样式有点多余。 eljunior:正如 Sudhir 提到的,它是 CI 框架的一部分,它基本上会截断字符串但保持单词完整。

标签: php codeigniter tumblr truncate


【解决方案1】:

您的问题与foreach 循环有关。您需要在$tumblr_post 之前添加& 以通过引用传递它。这可以确保您实际上正在编辑数组中的值。如果没有&,您只是在编辑一个局部变量而不是数组。

像这样尝试(注意&):

foreach($tumblr_posts as &$tumblr_post) {
    $tumblr_post['body'] = character_limiter($tumblr_post['body'], 150);
}

【讨论】:

  • 是的,就是这样 :) 谢谢。 & 在 (OO) C# 中是这样的吗?
  • @reaper_unique:& 告诉 PHP 通过引用传递变量。我不懂 C#,所以我不知道它是如何处理它们的。
最近更新 更多