如何从字符串中获取前5个字符[重复]

Posted

技术标签:

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

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

$myStr = "HelloWordl";

结果应该是这样的

$result = "Hello";

【问题讨论】:

更好的问题是:如何从字符串中获取前 n 个字符? 【参考方案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 $str5;

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

$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 年额外的行业经验让我看到了这个评论是多么令人畏惧,直到现在我都忘记了。

以上是关于如何从字符串中获取前5个字符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sed 从字符串中删除前 X 个字符?

如何从纯文本文件中获取字符串[重复]

砍字符串(用户传递的参数)[重复]

如何从字符串中删除前 10 个字符?

如何获取字符串的前五个字符

剑指offer-字符流中第一个不重复的字符