如何在特定字符之后剪切字符串


How can I cut a string after a specific character?

我想总是在搜索的字符串之后剪切我的路径:

$subject = "katze/123pferd/123hase/tier/affe/berg";
$search = "affe";
$pos = strpos($subject, $search);
if ($pos !== false) {
    $result = substr($subject, 0, strpos($subject, '/', $pos));
}
echo $result;

如果我的路径中只有一次元素,这工作正常。

例如,结果$search = "affe"的情况是katze/123pferd/123hase/tier/affe

对于$search = "tier"的情况,结果是katze/123pferd/123hase/tier

对于$search = "hase"的情况,结果是katze/123pferd/123hase

但是如果我有这种情况$search = "123"结果是katze/123pferd尽管它应该是katze/123pferd/123hase.

试试这个:

使用strpos检查最坏的情况。 比如123.

$subject = "katze/123pferd/123hase/tier/affe/berg";
$search = "affe";
$arr = explode("/", $subject);
$out = array();
foreach($arr as $val){
    $out[] = $val;
    if($val == $search || strpos($val, $search) !== false)
        break;      
}
echo implode("/", $out); //katze/123pferd/123hase/tier/affe
echo '<pre>';
print_r($out);

结果

Array
(
    [0] => katze
    [1] => 123pferd
    [2] => 123hase
    [3] => tier
    [4] => affe
)

试试这个

<?php
    $subject = "katze/123pferd/123hase/tier/affe/berg";
    $search = "affe";
    echo get_string($subject,$search);
    function get_string($subject,$search){
        $arr = (explode("/",$subject));
        $key = array_search($search, $arr);
        $newrr = array_slice($arr,0,$key+1,true);
        return implode("/",$newrr);
    }

使用 strrpos 查找字符串中子字符串最后一次出现的位置:

$subject = "katze/123pferd/123hase/tier/affe/berg";
$search = "123";
$pos = strrpos($subject, $search);
if ($pos !== false) {
    $result = substr($subject, 0, strpos($subject, '/', $pos));
}
print_r($result);   // "katze/123pferd/123hase"

http://php.net/manual/en/function.strrpos.php