如何在第二次出现字符“ - ”后删除字符串中的所有内容?
例如:今天是 - 星期五,明天是星期六
在这种情况下,我希望星期六与最后一个一起删除 - 所以不知何故剥离:“ - 星期六”
非常感谢任何帮助:)我似乎只能在第一个“ - ”之后删除所有内容。
答案 0 :(得分:11)
使用strpos查找第一个匹配项,并再次使用它来使用偏移选项和前一个值找到要结束的点。然后使用substr。
$newstr = substr($str, 0, strpos($str, '-', strpos($str, '-')+1));
答案 1 :(得分:9)
一些爆炸怎么样:
$parts = explode( '-', "Today is - Friday and tomorrow is - Saturday" );
echo $parts[0].'-'.$parts[1];
答案 2 :(得分:3)
答案 3 :(得分:2)
我得到了同样的问题但是我需要从第三次出现回来的字符串,所以我为那个你可以给出一个独特的分离位置的函数做了一个函数。可能是其他人喜欢使用:
function strcut( $str, $char, $pos ) {
$i = 1;
$a = explode( $char, $str );
$r = array();
foreach ( $a as $b ) {
if( $pos < $i ) {
$r[] = $b;
}
$i++;
}
return implode( $char, $r );
}
示例:
$str = "root/main/subfolder/photos/123.jpg";
$char = "/";
$pos = 3;
echo strcut($str, $char, $pos);
如果在结果之前需要分隔符,只需修改return:
return $char . implode( $char, $r );
答案 4 :(得分:1)
您可以使用explode()在每次出现“ - ”时拆分字符串。 EG:
$str = "Today is - Friday and tomorrow is - Saturday"
$parts = explode(" - ", $str);
会留下你:
$parts = ["Today is", "Friday and tomorrow is", "Saturday"]
因此,你想要的位将是前两个中间带有“ - ”的项目,所以我们可以从数组中弹出最后一个元素并加入其余元素:
array_pop($parts);
$result = implode(" - ", $parts);
给出了:
$result == "Today is - Friday and tomorrow is";
答案 5 :(得分:1)
对于有同样问题的其他人;我使用了这个易于调整的紧凑型解决方案。
$str = 'Today is - Friday and tomorrow is - Saturday';
$sliceWith = "-"; // character to split by
$beginWith = 0; // 1 removes before first match, 0 will not
$splitAfter = 2; // number of matches to keep
$result = implode($sliceWith, array_slice(explode($sliceWith, $str), $beginWith, $splitAfter));
echo $result; // You might want to use trim($result)
答案 6 :(得分:0)