在PHP的第二个下划线之后获取字符串

时间:2019-03-20 16:14:23

标签: php string substr

1_0_这是字符串

456_1_This_is_other_string_next

1999999_12_Is-string-too

获取方法:这是字符串,This_is_other_string_next,也是字符串

谢谢

3 个答案:

答案 0 :(得分:4)

只是一个思考的例子:

echo explode('_', '1_0_This is string', 3)[2];
echo explode('_', '1999999_12_Is-string-too', 3)[2];

答案 1 :(得分:1)

您可以尝试使用_分解原始字符串,并使用explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] ) : array分隔(请参见http://php.net/manual/en/function.explode.php)。

比您可以计算结果数组中的项目数并相应地返回一些内容。

示例...

$string = "1_0_This is string";

$parts = explode('_', $string);

$result = "";

if (count($parts) >= 3) {
  $result = $parts[2];
}

print $result;

答案 2 :(得分:0)

使用preg_replace进行限制

echo preg_replace('/[^_]+_/', '', '1999999_12_Is-string-too', 2);

输出

Is-string-too

正则表达式很简单。匹配除_以外的所有内容_(超过一次,贪婪)。限制2次更换。

使用Preg Split

print_r(preg_split('/^([^_]+_){2}/', '456_1_This_is_other_string_next', -1, PREG_SPLIT_NO_EMPTY));

输出

Array
(
    [0] => This_is_other_string_next
)

基本上是相同的正则表达式,但是此正则表达式与模式发生的前2次匹配。您可以使用preg_replace进行相同的操作,但是在那里毫无意义。