【发布时间】:2010-09-22 04:27:13
【问题描述】:
在 PHP 中,返回第一次出现特定字符之前的字符串部分的最简单方法是什么?
例如,如果我有一个字符串...
“快速的棕色狐狸跳过等等。”
...并且我正在过滤空格字符(“”),该函数将返回 “那个”。
【问题讨论】:
-
您可能会发现
s($str)->beforeFirst(' ')很有帮助,如在 this standalone library 中找到的那样。
在 PHP 中,返回第一次出现特定字符之前的字符串部分的最简单方法是什么?
例如,如果我有一个字符串...
“快速的棕色狐狸跳过等等。”
...并且我正在过滤空格字符(“”),该函数将返回 “那个”。
【问题讨论】:
s($str)->beforeFirst(' ') 很有帮助,如在 this standalone library 中找到的那样。
对于谷歌员工:strtok 更适合:
echo strtok("The quick brown fox", ' ');
【讨论】:
false(不是空字符串)。一些陷阱。
您可以这样做:
$string = 'The quick brown fox jumped over the lazy dog';
$substring = substr($string, 0, strpos($string, ' '));
但我更喜欢这个更好:
list($firstWord) = explode(' ', $string);
【讨论】:
return array_shift(explode(' ', $string));
explode(…) 中使用limit 参数,这样$string 就不会被扫描超过需要的部分:list($firstWord) = explode(' ', $string, 2);
strstr()查找第一次出现的字符串。返回 haystack 字符串的一部分,从第一次出现 needle 到 haystack 结尾。第三个参数:如果为 TRUE,strstr() 返回第一次出现针之前的大海捞针部分(不包括针)。
$haystack = 'The quick brown foxed jumped over the etc etc.';
$needle = ' ';
echo strstr($haystack, $needle, true);
打印The。
【讨论】:
strstr 将大文本 int 减半,strstr 上下工作:) ;
总而言之,有四种方法。分隔符=:
strstr($str, '=', true);strtok($str, '=');explode('=', $str)[0]; // Slowestsubstr($str, 0, strpos($str, '='));此表说明了输出差异。其他输出非常同构。
+-------+----------------+----------+-------+----------------+-------+-------+
| $str | "before=after" | "=after" | "=" | "no delimeter" | 1 | "" |
+-------+----------------+----------+-------+----------------+-------+-------+
| 1. | "before" | "" | "" | false | false | false |
| 2. | "before" | "after" | false | "no delimeter" | "1" | false |
| 3. | "before" | "" | "" | "no delimeter" | "1" | "" |
| 4. | "before" | "" | "" | "" | "" | "" |
如果出现多字节问题,请尝试例如mb_strstr:
mb_strstr($str, 'ζ', true);
进一步注意:explode 似乎更直接,处理多字节并通过在分隔符前后传递第三个参数返回
explode('ζ', $str, 2);
【讨论】:
strpos($str, ' ') 可能返回false 或偏移0。那行代码也不可靠。
使用这个:
$string = "The quick brown fox jumped over the etc etc.";
$splitter = " ";
$pieces = explode($splitter, $string);
echo $pieces[0];
【讨论】:
explode() 应该受到限制。应该解释这个答案——不仅仅是为了教育,而是为了让搜索引擎有一些东西可以咀嚼。
strtok() 函数将字符串分割成更小的字符串, 例如:
$string = "The quick brown";
$token = strtok($string, " "); // Output: The
如果你没有空格:打印所有字符
$string = "Thequickbrown";
$token = strtok($string, " "); // Output: Thequickbrown
【讨论】: