【发布时间】:2011-04-16 19:07:42
【问题描述】:
如何使用 php 从字符串中获取前 5 个字符
$myStr = "HelloWordl";
结果应该是这样的
$result = "Hello";
【问题讨论】:
-
更好的问题是:如何从字符串中获取前 n 个字符?
如何使用 php 从字符串中获取前 5 个字符
$myStr = "HelloWordl";
结果应该是这样的
$result = "Hello";
【问题讨论】:
对于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);
$url = "www.subwww.myweirddomainwww.com" 会怎样?没有对substr($url, 0, 4) 的初始检查,返回的$url 就毁了!!
使用substr():
$result = substr($myStr, 0, 5);
【讨论】:
substr("Häagen-Dazs", 0, 5) == "Häag" - 我做错了什么?
mb_substr。
【讨论】:
另一种只获取一个字符的方法。
$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
【讨论】:
mb_substr(i, 1) 来获取 ith 字符。 @RobertPounder - 因为它不会扩展到获得多个字符。
$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)
您只需使用substr()即可获得结果:
语法 substr(string,start,length)
例子
<?php
$myStr = "HelloWordl";
echo substr($myStr,0,5);
?>
输出:
Hello
【讨论】: