【问题标题】:How to extract substring from string in PHP until it reaches a different character?如何从 PHP 中的字符串中提取子字符串,直到它到达不同的字符?
【发布时间】:2013-12-28 01:01:44
【问题描述】:

例如我的字符串是这样的:

$str = "aaababca";

我想得到一个在到达 b 时停止的子字符串,所以我会得到

aaa

我该怎么做?

【问题讨论】:

  • 为什么不能只遍历字符串? (编纂是问题吗?)
  • @Theraot 他们可以,但开销会很大。
  • @AlexeiAverchenko 好吧,这种情况下的正则表达式对我来说似乎是开销。虽然我猜它是优化的 C 代码或类似的东西。
  • @Theraot 我在想 strpos :)

标签: php string substring


【解决方案1】:

如果您知道"b" 是不同的字符,那么您有一个非常简单的解决方案:

$substring = strstr($str, "b", true);

否则,您可能会遍历字符串,直到找到与第一个字符不同的字符:

$len = strlen($str);
$substring = $str[0];
$i = 1;
while($i < $len && $str[$i] == $str[0]){
$substring .= $str[$i];
$i++;
}

用更少的代码行,正则表达式可以做同样的事情:

preg_match("/^([[:print:]])\\1+/", $str, $mat);
$substring = $mat[0];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多