2016-04-28 98 views
1

我希望把我的路径查找的字符串后总是:如何在特定字符后切割一个字符串?

$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

+0

你可以使用foreach循环来做到这一点。 –

+0

那么你的预期结果是什么 –

回答

2

试试这个:

使用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 
) 
1

试试这个

<?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); 
    } 
1

使用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