如何从字符串中获取前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)
来获取 i
th 字符。 @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个字符[重复]的主要内容,如果未能解决你的问题,请参考以下文章