在出现第二个“ - ”字符后将字符串中的所有内容删除?

时间:2011-06-17 00:43:59

标签: php

如何在第二次出现字符“ - ”后删除字符串中的所有内容?

例如:今天是 - 星期五,明天是星期六

在这种情况下,我希望星期六与最后一个一起删除 - 所以不知何故剥离:“ - 星期六”

非常感谢任何帮助:)我似乎只能在第一个“ - ”之后删除所有内容。

7 个答案:

答案 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)

strtok的另一种方式:

$newStr = strtok($str, '-') . '-' . strtok('-');

DEMO

答案 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)

 $string = "Today is - Friday and tomorrow is - Saturday";
 $first_dash = strpos($string, '-');
 $second_dash = strpos($string, '-', $first_dash+1);
 $new_string = substr($string, $second_dash+1);

strpos

substr