【问题标题】:Get first word in string php the_title WordPress获取字符串 php the_title WordPress 中的第一个单词
【发布时间】:2010-04-17 18:13:03
【问题描述】:

我正在尝试将 wordpress 标题缩短为第一个单词。对于名为“John Doe”的页面,我希望在页面的某处有一个子标题,上面写着“关于 John”,所以我只想从标题中获取第一个单词。

有没有办法用 PHP 做到这一点?

谢谢!

更新:
感谢您的回答!我尝试了以下代码,但它似乎不起作用。它仍然与完整的标题相呼应。有什么建议吗?

<?php   
   $title = the_title();
   $names = explode(' ', $title);
   echo $names[0];
?>

【问题讨论】:

    标签: php wordpress string title


    【解决方案1】:

    这很容易:

    <?php
    $title = get_the_title(); // This must be!, because this is the return - the_title would be echo
    $title_array = explode(' ', $title);
    $first_word = $title_array[0];
    
    echo $first_word;
    ?>
    

    <?php
    $title = current(explode(' ', get_the_title()));
    
    echo $title;
    ?>
    

    未经测试,但应该可以工作:)

    希望这有帮助:)

    【讨论】:

    • 谢谢!完美运行!这里的关键是使用get_the_title,the_title 不能用于这个目的。
    【解决方案2】:
    $first_word = current(explode(' ', $title  ));
    

    或在您的模板文件中

    <?php echo current(explode(' ', $title  )) ?>
    

    按空间展开并获取结果数组中的第一个元素

    【讨论】:

    • @Galen: +1 使用current :)
    【解决方案3】:
    list($first_word) = explode(' ',$mystring);
    

    【讨论】:

    • 添加 trim() 使其更可靠。
    【解决方案4】:

    你可以这样做:

    $words = explode(' ', $the_title_here);
    echo $words[0];
    

    【讨论】:

      【解决方案5】:

      我认为您可能在这里遇到了一些 Wordpress 的特质。 the_title(),默认情况下,只打印出标题,不返回任何内容。为了让它返回标题字符串而不是打印它,你必须将the_title()的第三个参数设置为true。

      //fetch the title string into a variable
      $title = the_title('','',true);
      

      一旦你有了它,你就可以去掉第一个单词并手动回显它。如果您使用的是 PHP 5.3,您可以通过 strstr() 一行代码完成此操作:

      echo strstr($title," ",true);
      

      如果你的 PHP explode():

      $parts = explode(' ',$title);
      echo $parts[0];
      

      【讨论】:

      • 或者,您可以使用strtok($title, ' ')
      【解决方案6】:

      我建议完全避免对这个字符串进行解析,并使用更通用的方法为您的页面定义辅助标题。

      您应该使用 WordPress 的 Post Meta 系统来定义一个名为“subtitle”的自定义元字段,然后在模板中调用该字段。这样,您可以逐页决定您想要的副标题,而不是被锁定在帖子标题和副标题之间的特定关系中。这可能不会让你的生活变得更复杂,而且会大大简化它。

      您可以使用帖子编辑屏幕底部的“自定义字段”部分将帖子元添加到页面或帖子。您可以像这样在主题中显示这些字段:

      <?php echo get_post_meta($post->ID, $meta_key, 1);?>
      

      显然你最好先检查它是否存在,给你这样的东西:

      <?php if ( $subtitle = get_post_meta($post->ID, $meta_key, 1) ) 
          echo "<h3>$subtitle</h3>";
      ?>
      

      More details on the codex.

      【讨论】:

      • 我忘了说这是一个客户页面。如果这个客户讨厌一件事,它有责任在管理员中定义更多参数。字符串解析使得我不必让他填写额外的信息。副标题仅适用于一页,并且始终以相同的方式工作。如果页面的标题是 John Doe,那么副标题将显示为“About John”。无论如何,问题都已经解决了——感谢您的帮助!
      【解决方案7】:

      有一个字符串函数 (strtok) 可用于根据某些分隔符将字符串拆分为更小的字符串 (tokens)。就本线程而言,Test me more 的第一个单词(定义为第一个空格字符之前的任何内容)可以通过 tokenizing 空格字符上的字符串来获得。

      <?php
      $value = "Test me more";
      echo strtok($value, " "); // Test
      ?>
      

      有关更多详细信息和示例,请参阅strtok PHP manual page

      【讨论】:

        猜你喜欢
        • 2013-09-04
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多