我有一个看起来像这样的字符串:
abc-def-ghi-jkl-mno-pqr-stu-vwx-yz
我希望在第4次破折号之前获取内容,因此,我希望abc-def-ghi-jkl
分配给新的字符串,然后我就会将其分配给新的字符串。 d喜欢将mno
分配给不同的字符串。
我怎么能这样做?我尝试使用explode
,但将其更改为数组,我不想这样做。
答案 0 :(得分:6)
试试这个:
$n = 4; //nth dash
$str = 'abc-def-ghi-jkl-mno-pqr-stu-vwx-yz';
$pieces = explode('-', $str);
$part1 = implode('-', array_slice($pieces, 0, $n));
$part2 = $pieces[$n];
echo $part1; //abc-def-ghi-jkl
echo $part2; //mno
http://php.net/manual/en/function.array-slice.php
答案 1 :(得分:0)
您可以添加源代码吗?我以前做过这个,但我不记得我用过的确切源代码。但我很确定我使用了爆炸,你不能避免使用数组。
编辑:Mark M回答是对的。答案 2 :(得分:0)
你可以尝试使用substr作为另一种可能的解决方案
http://php.net/manual/en/function.substr.php
如果我看到你想要的地方,你也可以进入substr_replace
答案 3 :(得分:0)
我想爆炸的替代方法是找到第4个位置 - 在字符串中然后从字符串的开头到该字符获得一个子字符串。
您可以使用find the second occurrence of a char in a string php中解释的方法使用循环找到位置,然后使用substr(string,0,pos)来获取子字符串。
$string = "abc-def-ghi-jkl-mno-pqr-stu-vwx-yz";
$pos = -1;
for($i=0;$i<4;$i++)
$pos = strpos($string, '-', $pos+1);
echo substr($string, 0, $pos);
代码未经过测试,但过程很容易理解。你从第一个字符(0)开始,找到一个 - 然后在下一个循环中从那个位置开始+1。循环重复它一定次数,然后你得到从开始到最后的子串 - 你找到了。