如何最快地从以下字符串中仅获取important_stuff部分:
bla-bla_delimiter_important_stuff
_delimiter_
总是存在的,但字符串的其余部分可能会更改。
这里:
$arr = explode('delimeter', $initialString);
$important = $arr[1];
$important = explode("delimeter",$initialString)[1];
将初始字符串 $initialString
按照 "分隔符" 进行分割并获取第二个元素作为重要信息 $important
。 - zgr024limit
参数可能会更快:explode('delimiter', $initialString, 2)
- 无需在其后遍历。 - user5147563$result = end(explode('_delimiter_', 'bla-bla_delimiter_important_stuff'));
我喜欢这种方法:
$str="bla-bla_delimiter_important_stuff";
$del="_delimiter_";
$pos=strpos($str, $del);
$important=substr($str, $pos+strlen($del)-1, strlen($str)-1);
注意:
1)对于substr函数,字符串从0开始;而对于strpos和strlen函数,字符串的长度从1开始。
2)使用一个字符作为分隔符可能是一个好主意。
E_STRICT
错误 (Strict Standards: Only variables should be passed by reference
),因为 array_pop
使用了引用,但仍然可以工作。 - Martin Lyne$string = "bla-bla_delimiter_important_stuff";
list($junk,$important_stufF) = explode("_delimiter_",$string);
echo $important_stuff;
> important_stuff
$junk
变量 - list(,$important_stufF) = explode(...)
就可以了。2)在PHP7的后续版本中,你可以使用更简洁的语法 - [,$important_stufF] = explode(...)
。 - Barryif (preg_match('/.*_delimiter_(.*)/', 'bla-bla_delimiter_important_stuff', $matches)) echo $matches[1];
s($str)->afterFirst('_delimiter_')
或者s($str)->afterLast('_delimiter_')
很有用,这些函数可以在这个独立库中找到。 - caw