【问题标题】:How to get first 5 characters from string [duplicate]如何从字符串中获取前5个字符[重复]
【发布时间】:2011-04-16 19:07:42
【问题描述】:

如何使用 php 从字符串中获取前 5 个字符

$myStr = "HelloWordl";

结果应该是这样的

$result = "Hello";

【问题讨论】:

  • 更好的问题是:如何从字符串中获取前 n 个字符?

标签: php substring


【解决方案1】:

对于single-byte strings(例如US-ASCII、ISO 8859 系列等)使用substr,对于multi-byte strings(例如UTF-8、UTF-16 等)使用mb_substr

// singlebyte strings
$result = substr($myStr, 0, 5);
// multibyte strings
$result = mb_substr($myStr, 0, 5);

【讨论】:

  • 谢谢,这正是我需要的:if(substr($myURL, 0, 4) == "www.") $myURL = preg_replace('/www./', '', $myURL, 1);
  • 你真的只需要 str_replace('www.','', $url);不必检查它是否存在。
  • @DougCassidy:如果$url = "www.subwww.myweirddomainwww.com" 会怎样?没有对substr($url, 0, 4) 的初始检查,返回的$url 就毁了!!
【解决方案2】:

使用substr():

$result = substr($myStr, 0, 5);

【讨论】:

  • substr("Häagen-Dazs", 0, 5) == "Häag" - 我做错了什么?
  • @stereofrog:您可能正在使用像 UTF-8 这样的多字节字符编码。在这种情况下使用mb_substr
【解决方案3】:

您可以像这样使用substr 函数:

echo substr($myStr, 0, 5);

substr 的第二个参数是你想从什么位置开始,第三个参数是你想返回多少个字符。

【讨论】:

    【解决方案4】:

    另一种只获取一个字符的方法。

    $str = 'abcdefghij';
    echo $str{5};
    

    我不会特别使用它,而是用于教育目的。我们可以用它来回答这个问题:

    $newString = '';
    for ($i = 0; $i < 5; $i++) {
        $newString .= $str{$i};
    }
    echo $newString;
    

    对于任何使用它的人。请记住,用于访问数组元素和字符串偏移量的花括号语法已从 PHP 7.4 中弃用

    更多信息: https://wiki.php.net/rfc/deprecate_curly_braces_array_access

    【讨论】:

    • 这是对错误问题的正确答案。投反对票。
    • 因为它需要的不仅仅是复制粘贴?
    • 注意:对于多字节字符集,例如 UTF-8,必须改为使用 mb_substr(i, 1) 来获取 ith 字符。 @RobertPounder - 因为它不会扩展到获得多个字符。
    • @ToolmakerSteve,如果你这么说的话; $string = "Häagen-Dazs"; $stringFirstChars = function($amount, $string) { $i=0;$done=false;$return = '';while($done == false) {$return.=$string{$i};if($amount===$i)$done=true;$i++;}return $return;}; var_dump($stringFirstChars(5, $string));(复制粘贴到 phptester.net 或 w.e)
    • 是的,我知道。我个人并没有否决它。我只是观察到它不回答问题的方式。你写的 - that 将是一个完整的答案:向初学者展示如何在 php 中从一个字符扩展到多个字符。对问答的有用补充 - 谢谢。
    【解决方案5】:

    您只需使用substr()即可获得结果:

    语法 substr(string,start,length)

    例子

    <?php
    $myStr = "HelloWordl";
    echo substr($myStr,0,5);
    ?>
    

    输出:

     Hello
    

    【讨论】:

    • 这篇非常晚的帖子没有增加任何价值,只会使页面膨胀,因为它所说的一切都已经说过(几年前)。除非您有一些独特且有价值的东西要添加,否则请不要发布答案。否决这个答案以阻止无用的迟到的帖子。
    • 您在 7 年后发布了答案?认真的吗?
    • @Varin 7 年后发布答案是可以的。代码更改。它只需要是有价值的(而不是重复的),而他不是,所以他被骂了。
    • @JustinBreen 我在 4 年前写了那条评论。这 4 年额外的行业经验让我看到了这个评论是多么令人畏惧,直到现在我都忘记了。
    猜你喜欢
    • 2014-02-15
    • 1970-01-01
    • 2017-05-23
    • 2015-11-04
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2021-01-09
    相关资源
    最近更新 更多