将字符串分成多个字符串值

时间:2016-06-22 05:14:51

标签: php

我有一个underscores(_)的字符串。我想要的是获取第一个下划线后的字符串值并将其视为第一个字符串值,第二个字符串值将是使用php的第一个字符串值下划线后的整个字符串。

示例:

$string = "Makes_me_wonder";

我想要的结果:

$str1 = "me";
$str2 = "wonder";

我所拥有的另一个变数:

$string = "I_wont_gohome_withoutyou";

结果应该是:

$str1 = "wont";
$str2 = "gohome_withoutyou";

另一个:

$string = 'Never_gonna_leave_this_bed";

我想要的输出: -

$str1 = "gonna_leave"; 
$str2 = "this_bed";

请帮帮我。感谢。

4 个答案:

答案 0 :(得分:2)

您可以将explode与第三个参数 - 限制

一起使用

DEMO

$string = "I_wont_gohome_withoutyou";

$arr = explode("_",$string,3);

$str1 = $arr[1];   //wont
$str2 = $arr[2];   //gohome_withoutyou

如果您严格遵守一个单词中的两个或多个_。如果是这样的话,也需要解决。

答案 1 :(得分:2)

function explode($string)
{
    $delimiter = '_';
    return explode($delimiter, explode($delimiter, $string, 2)[1], 2);
}

$string = "Makes_me_wonder";
$strings = explode($string);
echo $strings[0]; //me
echo $strings[1]; //wonder

$string = "I_wont_gohome_withoutyou";
$strings = explode($string);
echo $strings[0]; //wont
echo $strings[1]; //gohome_withoutyou

答案 2 :(得分:1)

有多种方法,但这里有一种方法。

$pos1 = strpos($string, '_');
$pos2 = strpos($string, '_', $pos1 + 1);
$str1 = substr($string, $pos1 + 1, $pos2 - $pos1 - 1);
$str2 = substr($string, $pos2 + 1);

这假设字符串中至少有2个下划线。

答案 3 :(得分:1)

我认为您的解决方案是这样的: -

<?php
function getfinal_result($string){
    $final_data = explode('_',$string,2)[1]; // explode with first occurrence of _ and leave first word
    if(substr_count($final_data,'_')>2){ // now check  _ remains  is greater that 2
        $first_data = substr($final_data , 0, strpos($final_data , '_', strpos($final_data , '_')+1)); // find the string comes after second _
        $second_data = str_replace($first_data.'_','',$final_data); // get the string before the second _
        $last_data = Array($first_data,$second_data); // assign them to final data
    }else{
        $last_data = explode('_',$final_data,2); // directly explode with first occurance of _
    }
    return $last_data; // return final data

}
$first_data = getfinal_result('Makes_me_wonder');
$second_data = getfinal_result('I_wont_gohome_withoutyou');
$third_data = getfinal_result('Never_gonna_leave_this_bed');

echo "<pre/>";print_r($first_data);
echo "<pre/>";print_r($second_data);
echo "<pre/>";print_r($third_data);
?>

输出: - https://eval.in/593240