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


Answers:


549

对于单字节字符串(例如US-ASCII,ISO 8859系列等)使用substr,对于多字节字符串(例如UTF-8,UTF-16等)使用mb_substr

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

2
谢谢,这就是我需要的:if(substr($myURL, 0, 4) == "www.") $myURL = preg_replace('/www./', '', $myURL, 1);
shanehoban 2014年

1
您实际上只需要str_replace('www。','',$ url); 不必检查它是否存在。
Doug Cassidy

8
@DougCassidy:如果$url = "www.subwww.myweirddomainwww.com"呢?没有初始检查substr($url, 0, 4),退货$url毁了!!
Fr0zenFyr

46

用途substr()

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

substr("Häagen-Dazs", 0, 5) == "Häag"- 我究竟做错了什么?
user187291's

12
@stereofrog:您可能正在使用像UTF-8这样的多字节字符编码。在这种情况下,请使用mb_substr
Gumbo 2010年

20

仅获得一个字符的另一种方法。

$str = 'abcdefghij';

echo $str{5};

7
这是对错误问题的正确答案。不赞成投票。
mickmackusa

因为它需要的不仅仅是复制粘贴?
罗伯特·庞德

注意:对于多字节字符集(例如UTF-8),必须改用mb_substr(i, 1)获取i字符。@RobertPounder-因为它不会扩展到获得多个字符。
ToolmakerSteve

1
@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或我们中)
Robert Pounder

是的我知道。我个人没有投票反对;我只是观察它无法回答问题的方式。您写的内容- 将是一个完整的答案:向初学者展示如何在php中将获取一个字符扩展为多个字符。问答的有用补充-谢谢。
ToolmakerSteve

15

您可以使用如下substr功能:

echo substr($myStr, 0, 5);

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


-4

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

语法 substr(string,start,length)

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

输出:

 Hello

16
这篇非常晚的帖子没有任何价值,只是使页面肿,因为它所说的一切都已经被说了(几年前)。除非您要添加一些独特且有价值的内容,否则请不要发布答案。否决了这个答案,以阻止无用的最新帖子。
mickmackusa

7年后,您发布了答案吗?认真吗
Varin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.